P3817 小A的糖果
程序员文章站
2022-06-13 13:20:03
...
这题思路也十分简单,分组考虑,稍加分析即可。
对于 n个数 x1 x2 x3 x4 x5 x6 x7 x8
我们可以这样考虑,第一组x1+x2>x那么是不是让x1尽可能小呢,答案不是的。因为我们要求吃掉的最少的糖果数量,如果吃掉x1的很多糖果数量,那么仅仅是x1和x2这个组,但是如果我们对x2动刀,就可以兼顾两个组,x1-- x2和x2–x3,所以如果x1>x 即让x1减少到 x 即吃掉 x1-x个糖果,然后从i=2开始,循环判断xi+xi-1是否大于x,如果大于x 即吃掉最少的糖果数量,并更新xi的值,代码如下:
#include <iostream>
using namespace std;
typedef long long int ll;
int main()
{
ll n,x;
cin>>n>>x;
ll a[n+1];
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
ll sum=0;
if(a[1]>x)
{
sum+=a[1]-x;
a[1]=x;
}
for(int i=2;i<=n;i++)
{
if(a[i]+a[i-1]>x)
{
int t=a[i]+a[i-1];
sum+=t-x;
a[i]=a[i]-(t-x);
}
}
cout<<sum;
return 0;
}
上一篇: 洛谷P3817 Java解法