题解:P11642 【MX-X8-T1】「TAOI-3」幸运草
在写这题之前,建议大家先看一下这一道题
相信大家发现此题与这一道题很像,唯一不同的就是此题加上了
思路
那这一道题是怎么操作的呢?我们可以先从第一个数开始选,用一个变量存当前的和。当我们发现这个变量的值小于
讲得这么清楚,这一道题的代码也就很好写了,具体如下:
#include <bits/stdc++.h>
using namespace std;
int n,x,sum,ans=-1e9;
int main(){
cin>>n;
for(int i = 1;i<=n;i++){
cin>>x;
sum+=x;
ans=max(ans,sum);
if(sum<0) sum=0;
}
cout<<ans;
return 0;
}
回归正题,我们可以将
AC code:
#include <bits/stdc++.h>
using namespace std;
#define int long long
int n,x,t,ans,now,sum;
signed main(){
cin>>n>>x;
for(int i = 1;i<=n;i++){
cin>>t;
sum+=t;
now+=x-t;//将这个值赋值为 x 就等价于贡献了 x-t
ans=max(ans,now);
if(now<0) now=0;
}
cout<<ans+sum;
return 0;
}