#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn = 1e6 + 10;
int dp[maxn],a[maxn],b[maxn];
int n;
int maxx[maxn];
signed main()
{
int T;cin >> T;
while(T--)
{
memset(dp,-63,sizeof(dp));dp[0] = 0;
memset(maxx,-63,sizeof(maxx));
cin >> n;
for(int i = 1;i <= n;i++)cin >> a[i],b[i] = b[i - 1] + a[i] * (a[i] == a[i - 1]);
for(int i = 1;i <= n;i++)
{
dp[i] = max(maxx[a[i]] + a[i] + b[i - 1],dp[i - 1]);
maxx[a[i - 1]] = max(dp[i] - b[i - 1],maxx[a[i - 1]]);
}
cout << dp[n] << '\n';
}
return 0;
}
就是定义 dpi 为前 i 个数的答案