rt,dalao麻烦康康,记录
代码给了:
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
int t,n,a[N],b[N],c[N];
bool judge(){
for(int i=0;i<=1;i++){
int f = 1;
for(int j=1;j<=n/2;j++)
if(b[i + j] != c[j]){
f = 0;
break;
}
if(f) return 1;
}
return 0;
}
int main(){
scanf("%d",&t);
while(t --){
memset(a,-1,sizeof a);
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
if((n & 1) == 0){
int flag = 1;
for(int i=1;i<=n/2;i++)
if(a[i] != a[i + n/2]){
flag = 0;
break;
}
if(flag) puts("NO");
else puts("YES");
}
else{
if(a[1] == 0) puts("NO");
else{
int f1 = 0,f2 = 0;
for(int i=1;i<=n/2;i++) c[i] = a[i];
for(int i=n/2+1;i<=n;i++) b[i - n/2] = a[i];
if(judge()) f1 = 1;
if(!f1){
puts("YES");
continue;
}
for(int i=1;i<=n/2+1;i++) b[i] = a[i];
for(int i=n/2+2;i<=n;i++) c[i - n/2 - 1] = a[i];
if(judge()) f2 = 1;
if(f1 && f2) puts("NO");
else puts("YES");
}
}
}
return 0;
}