#include<bits/stdc++.h>
using namespace std;long long _,p,x,n,t,f[1<<20];main(){cin>>n;while(cin>>n){for(_=p=t=0,memset(f,-127,8<<20);n--;p=x)cin>>x,x==p?_+=x:t=f[p]=max(f[p],max(f[x]+x,t));cout<<_+t<<endl;}}
这个只有208B
下面这个是展开来的
#include<bits/stdc++.h>
using namespace std;
long long _,p,x,n,t,f[1<<20];
main(){
cin>>n;
while(cin>>n){
for(_=p=t=0,memset(f,-127,8<<20);n--;p=x)cin>>x,x==p?_+=x:t=f[p]=max(f[p],max(f[x]+x,t));
cout<<_+t<<endl;
}
}