用 这篇题解 的做法,直接 WA 0 pts,求条
宣贯。
#include<bits/stdc++.h>
#define Fuck return
#define CCF 0
using namespace std;
typedef long long ll;
const int N=2e5+5,A=1e6+5;
int n,a[N],lst[A],pre[N],s[N],dp[N][2];
void solve() {
cin>>n;
for(int i=0;i<=1000000;i++) lst[i]=0;
for(int i=0;i<=n;i++) pre[i]=s[i]=dp[i][0]=dp[i][1]=0;
for(int i=1;i<=n;i++) {
cin>>a[i];
pre[i]=lst[a[i]];
lst[a[i]]=i;
}
for(int i=1;i<=n;i++) s[i]=s[i-1]+(a[i]==a[i-1]?a[i]:0);
// for(int i=1;i<=n;i++) cout<<s[i]<<' ';
// cout<<'\n';
for(int i=1;i<=n;i++) {
dp[i][0]=max(dp[i-1][0],dp[i-1][1]);
dp[i][1]=max(dp[i-1][0],dp[i-1][1]);
if(pre[i]) {
dp[i][0]=max(dp[i][0],a[i]+dp[pre[i]+1][1]+s[i-1]-s[pre[i]+1]);
dp[i][1]=max(dp[i][1],a[i]+dp[pre[i]+1][0]+s[i-1]-s[pre[i]+1]);
}
}
cout<<max(dp[n][0],dp[n][1])<<'\n';
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int t;cin>>t;
while(t--) solve();
Fuck CCF;
}