欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

P3817 小A的糖果

程序员文章站 2022-06-13 13:20:03
...

P3817 小A的糖果

这题思路也十分简单,分组考虑,稍加分析即可。
对于 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;

    }
相关标签: 贪心