请求加入题解
查看原帖
请求加入题解
796997
CandyGodOfWar楼主2024/12/28 16:35
#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;
}

这是我的代码,题解中应该没有类似的,而且我的代码我个人认为还是比较容易理解的

2024/12/28 16:35
加载中...