洛谷P6625 [省选联考 2020 B 卷] 卡牌游戏

思路

题目大意:

找出数组中若干个前缀和,使其总和最大。并且没有数量限制,这对于我们来说很爽。

只需要找出所有不为负数的前缀和并累加即可。

代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    cin>>n;
    long long a[n+1];//便于理解保留两个数组,可以将空间复杂度优化为O(1)
	long long s[n+1]={};
    long long ans=0;
    for(int i = 1;i<=n;i++){
        cin>>a[i];
        s[i]+=s[i-1]+a[i];//递推求前缀和
        if(s[i]>0&&i!=1){//i==1 时不计数
            ans+=s[i];
        }
    }
    cout<<ans;
}

posted @ 2025-03-19 17:58  mcr130102  阅读(31)  评论(0)    收藏  举报
请不要抄袭任何人的博客,这是对一名开发者最基本的尊重。