求条
查看原帖
求条
421291
Noble_Wolf楼主2024/8/16 14:52
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int re(){
	int x=0,f=1;
	char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
	return x*f;
}
void file(){
	freopen(".in","r",stdin);
	freopen(".out","w",stdout);
}
#define ull unsigned ll
const int N = 5e5+10,MOD=1e9+7;
int n;
ull hs1[N],hs2[N],jz[N];
int main(){
	int T=re();
	jz[0]=1;
	for(int i=1;i<=N-10;i++)jz[i]=jz[i-1]*131%MOD;
	while(T--){
		n=re();
		for(int i=1;i<=n;i++)hs1[i]=hs2[i]=0;
		bool flag=0;
		for(int i=1;i<=n;i++){
			int x=re();
			if(flag==1)continue;
			for(int j=x;j<=n;j++)hs1[j]+=jz[x],hs1[j]%=MOD;
			for(int j=x;j>=1;j--)hs2[j]+=jz[n-x+1],hs2[j]%=MOD;
			if(x-1<n-x){
				if((hs1[x]*jz[(n-x-x+1)]%MOD)!=(hs2[x]-hs2[x+x]+MOD)%MOD){
					puts("Y");
					flag=1;
				}
			}
			else{
				if((hs2[x]*jz[x-1-n+x])%MOD!=(hs1[x]-hs1[x-(n-x+1)])%MOD){
					cout<<(hs2[x]*jz[x-1-n+x])%MOD<<" "<<(hs1[x]-hs1[x-(n-x+1)])%MOD;
					puts("Y");
					flag=1;
				}
			}
		}
		if(!flag)puts("N");
	}
	return 0;
}

16pts,讨论区有一hack:

1
10
1 9 5 3 7 4 8 10 2 6
2024/8/16 14:52
加载中...