洛谷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;
}
这是mcr130102的博客,转载请注明出处

浙公网安备 33010602011771号