萌新求助,样例过了10tps
查看原帖
萌新求助,样例过了10tps
561708
long_int楼主2021/10/2 20:50

代码:

#include <bits/stdc++.h>
#define maxn 1000005
#define int long long
#define _for(i, a, b)  for (int i = (a); i <= (b); i++)
int n, p;
int a[maxn], f[maxn], score[maxn]; //a 为原始数字,f为最大子段和,score为总分
void Max_sum() { //最大子段和
    a[0] = -maxn;
    _for (i, 1, n) {
        if (a[i - 1] >= 0)
            a[i] = (a[i - 1] + a[i]) % p;
        f[i] = std::max(a[i], a[i - 1]) % p;
    }
}
signed main() {
    scanf("%lld%lld", &n, &p);
    _for (i, 1, n)
        scanf("%lld", a + i);
    Max_sum();
    score[1] = f[1];
    int ans = (score[1] + f[1]) % p;
    _for (i, 2, n - 1) {
        score[i] = ans % p;
        ans = std::max(ans, score[i] + f[i]) % p;
    }
    ans = std::max(score[1], ans % p);
    printf("%lld\n", ans);
    return 0;
}

感觉是最后的 forfor 出了问题。

求大佬解决,卡了蒟蒻一整天了

2021/10/2 20:50
加载中...