#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=2e5+1;
int T,n,sum[201][maxn],a[maxn],num[201];
vector<int>v[201];
int main()
{
scanf("%d",&T);
while(T--)
{
int maxx=0;
scanf("%d",&n);
for(int i=0;i<=200;++i)
{
v[i].clear();
num[i]=0;
for(int j=1;j<=n;++j) sum[i][j]=0;
}
for(int i=1;i<=n;++i)
{
scanf("%d",&a[i]);
v[a[i]].push_back(i);
num[a[i]]++;
sum[a[i]][i]++;
maxx=max(maxx,num[a[i]]);
}
int ans=maxx;
for(int i=1;i<=200;++i)
for(int j=1;j<=n;++j)
sum[i][j]+=sum[i][j-1];
for(int i=1;i<=200;++i)
{
int size=v[i].size();
for(int j=0;j<size/2;++j)
{
int l=v[i][j],r=v[i][size-j-1];
for(int k=1;k<=200;++k)
ans=max(ans,(j+1)*2+sum[k][r-1]-sum[k][l]);
}
}
printf("%d\n",ans);
}
}
Codeforces Round #634 (Div. 3) E2. Three Blocks Palindrome (hard version)(前綴和+思維)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.