求hack,求调
  • 板块CF1997E Level Up
  • 楼主HHYQ_07
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/2 15:31
  • 上次更新2024/8/2 16:15:17
查看原帖
求hack,求调
876418
HHYQ_07楼主2024/8/2 15:31

对拍了几千组随机数据全过了,挂的是 k>nk>\sqrt n 的部分,前面的暴力应该没错。二分写的是倍增,题解没有类似做法,孩子被调崩溃了,求有缘大佬调或是给组hack。

#pragma GCC optimize(3)
#pragma GCC target("avx")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("inline")
#pragma GCC optimize("-fgcse")
#pragma GCC optimize("-fgcse-lm")
#pragma GCC optimize("-fipa-sra")
#pragma GCC optimize("-ftree-pre")
#pragma GCC optimize("-ftree-vrp")
#pragma GCC optimize("-fpeephole2")
#pragma GCC optimize("-ffast-math")
#pragma GCC optimize("-fsched-spec")
#pragma GCC optimize("unroll-loops")
#pragma GCC optimize("-falign-jumps")
#pragma GCC optimize("-falign-loops")
#pragma GCC optimize("-falign-labels")
#pragma GCC optimize("-fdevirtualize")
#pragma GCC optimize("-fcaller-saves")
#pragma GCC optimize("-fcrossjumping")
#pragma GCC optimize("-fthread-jumps")
#pragma GCC optimize("-funroll-loops")
#pragma GCC optimize("-fwhole-program")
#pragma GCC optimize("-freorder-blocks")
#pragma GCC optimize("-fschedule-insns")
#pragma GCC optimize("inline-functions")
#pragma GCC optimize("-ftree-tail-merge")
#pragma GCC optimize("-fschedule-insns2")
#pragma GCC optimize("-fstrict-aliasing")
#pragma GCC optimize("-fstrict-overflow")
#pragma GCC optimize("-falign-functions")
#pragma GCC optimize("-fcse-skip-blocks")
#pragma GCC optimize("-fcse-follow-jumps")
#pragma GCC optimize("-fsched-interblock")
#pragma GCC optimize("-fpartial-inlining")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("-freorder-functions")
#pragma GCC optimize("-findirect-inlining")
#pragma GCC optimize("-fhoist-adjacent-loads")
#pragma GCC optimize("-frerun-cse-after-loop")
#pragma GCC optimize("inline-small-functions")
#pragma GCC optimize("-finline-small-functions")
#pragma GCC optimize("-ftree-switch-conversion")
#pragma GCC optimize("-foptimize-sibling-calls")
#pragma GCC optimize("-fexpensive-optimizations")
#pragma GCC optimize("-funsafe-loop-optimizations")
#pragma GCC optimize("inline-functions-called-once")
#pragma GCC optimize("-fdelete-null-pointer-checks")
#pragma GCC optimize("Ofast", "inline", "-ffast-math")
#pragma GCC target("avx,sse2,sse3,sse4,mmx")
#include<bits\stdc++.h>
using namespace std;
inline int read()
{
	char cc;
	while(1){cc=getchar();if((cc>='0'&&cc<='9')||cc=='-')break;}
	int sum=0,flag=1;
	cc=='-'?flag=-1:sum=(cc^48);
	while(1){cc=getchar();if(!(cc>='0'&&cc<='9'))break;sum=(sum<<1)+(sum<<3)+(cc^48);}
	return sum*flag;
}
const int N=2e5+5,B=455;
int n,q,a[N],sum[B][N],lev,num,pos=1,l,r;
bool ans[N];
struct node
{
	int x,k,id;
}b[N];
bool cmp(node a,node b)
{
	return a.k<b.k;
}
int main()
{
	cout.tie(0);
	n=read(),q=read();
	for(int i=1;i<=n;i++)
		a[i]=read();
	for(int i=1;i<=450;i++)
	{
		lev=1;
		num=0;
		for(int j=0;j<=n;j++)
		{
			if(a[j]>=lev)
			{
				num++;
				if(num%i==0)lev++;
			}
			sum[i][j]=lev;
		}
	}
	for(int i=1;i<=q;i++)
	{
		b[i].x=read(),b[i].k=read();
		b[i].id=i;
	}
	sort(b+1,b+q+1,cmp);
	while(pos<=q&&b[pos].k<=450)
	{
		if(sum[b[pos].k][b[pos].x-1]<=a[b[pos].x])
			ans[b[pos].id]=1;
		pos++;
	}
	memset(sum,0,sizeof(sum));
	for(int i=1;i<=n;i++)
		if(a[i]<=450)
			sum[a[i]][i]++;
	for(int i=1;i<=450;i++)
		for(int j=1;j<=n;j++)
			sum[i][j]+=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1];
	while(pos<=q)
	{
		lev=num=l=1;
		r=0;
		while(b[pos].x-r-sum[lev-1][b[pos].x]+sum[lev-1][r]>=b[pos].k)
		{
			for(int i=1<<30;i;i>>=1)
				if(r+i<b[pos].x&&r+i-l+1-sum[lev-1][r+i]+sum[lev-1][l-1]<b[i].k)r+=i;
			r++;
			l=r+1;
			lev++;
		}
		if(r==b[pos].x||lev<=a[b[pos].x])ans[b[pos].id]=1;
		pos++;
	}
	for(int i=1;i<=q;i++)
		cout<<(ans[i]?"YES\n":"NO\n");

	return 0;
}
2024/8/2 15:31
加载中...