#include<iostream>
#define int long long
using namespace std;
const int N = 1e6 + 5;
int t, n, a[N], dp[N];
void z () {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
for (int i = 1; i <= N; i++) {
dp[i] = -1e19;
}
int sum1 = 0;
int sum2 = 0;
for (int i = 1; i <= n; i++) {
if (a[i] == a[i - 1]) {
sum2 += a[i];
}
else {
dp[a[i - 1]] = max(sum1, dp[a[i]] + a[i]);
sum1 = max(sum1, dp[a[i - 1]]);
}
}
cout << sum1 + sum2 << "\n";
}
signed main () {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> t;
while (t--) {
z();
}
return 0;
}
这是我的代码,题解中应该没有类似的,而且我的代码我个人认为还是比较容易理解的