题目描述
小A有N个糖果盒,第i个盒中有a[i]颗糖果。
小A每次可以从其中一盒糖果中吃掉一颗,他想知道,要让任意两个相邻的盒子中加起来都只有x颗或以下的糖果,至少得吃掉几颗糖。
问题链接
https://www.luogu.org/problemnew/show/P3817
问题解答:
典型的贪心:
ans要开long long
为了使吃的最少,要改变两盒糖果中后面那盒
代码:
#include<bits/stdc++.h>
using namespace std; int main() { long long ans=0,N,x,i; cin>>N>>x; int a[N]; for(i=0;i<N;i++) cin>>a[i]; for(i=0;i<N-1;i++) { if(a[i]+a[i+1]>x) { ans+=a[i]+a[i+1]-x; a[i+1]=x-a[i]; } } cout<<ans<<endl; return 0; }