原题链接
数据范围
1≤T≤100,
3≤n≤5000,
1≤ai≤n,
一个测试点内所有 n 的和不超过 5000。
输入样例:
5
3
1 2 1
5
1 2 2 3 2
3
1 1 2
4
1 2 2 1
10
1 1 2 2 3 3 4 4 5 5
输出样例:
YES
YES
NO
YES
NO
注意,这里是回文子序列,只需要有两个相等的数不相邻即可,然后中间随便选一个数,就能构成回文子序列
AC代码:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=5003;
int a[maxn];
int main(){
int T;
scanf("%d",&T);
while(T--){
int n;
bool flag=0;
scanf("%d",&n);
memset(a,0,sizeof(a));
int pre=0;
for(int i=1;i<=n;++i){
int x;
scanf("%d",&x);
if(!a[x])a[x]=i;
if(a[x]&&i-a[x]>1)flag=1;
}
if(flag)printf("YES\n");
else printf("NO\n");
}
return 0;
}