洛谷 P1115 最大子段和

贪心思路:

如果前方的累加和小于0,那么再往后面加相当于给后面的数加上了“累赘”,倒不如直接舍弃前面的累加和,从头开始。

DP解释:

f[i]=max(f[i-1]+n[i],n[i]),转移方程在此。
下方用贪心写。

AcCode:

#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;

int main(){
    ll N, ans = -1e5, sum = 0;
    cin >> N;
    for(int i = 1; i <= N; i++){
        ll k;
        cin >> k;
        sum += k;
        ans = max(ans, sum);
        if(sum < 0) sum = 0;
    }
    
    cout << ans;
    return 0;
}
posted @ 2025-05-28 21:33  Yuhhhhh  阅读(24)  评论(0)    收藏  举报