RT,朴素DP详看题解,省流:期望25pts实际10pts,转移方程:如果 ai=aj 且 aj=ak 则 fi=max(fi,fk+2)。
#include<iostream>
using namespace std;
int f[500005],a[500005],n;
int main(){
cin >> n;
for(int i=1;i<=n;i++){
cin >> a[i];
}
for(int i=1;i<=n;i++){
for(int j=i-1;j>=1;j--){
for(int k=j;k>=1;k--){
if((a[i]==a[j] && a[j]!=a[k]) || k==1){
f[i]=max(f[i],f[k]+2);
}
}
}
}
cout << f[n];
return 0;
}