@[linshangyun](/user/635711)
~~大哥,这是贪心。~~
其实你可以这样想:题目中要求每两个盒子中的糖果总量<=m。比如:**i和i+1,i+1和i+2**……黑体字的地方你会看出i不能和i+2个盒子中的总量去比,但i+1可以和i一起比,也可以和i+2一起比,所以这题的贪点就在我们要在能同时在两个盒子中间的盒子吃糖(吃过的不要再吃)让后加上吃掉的糖果数。
ac代码:
```
#include<bits/stdc++.h>
using namespace std;
const int N=1e8+10;
long long n,m,a[N],ans,sum;
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
sum=a[i]+a[i+1];//i和i+1个盒子中糖果的总量
if(sum>m){
a[i+1]-=sum-m;//吃和i+2的盒子挨着的盒子中的糖
ans+=sum-m;//记录吃掉糖的总数
}
}
cout<<ans;
}
```
by LoTLaneyyat @ 2024-01-23 20:43:41
AC了,感谢大佬
by linshangyun @ 2024-01-24 11:31:47