zoukankan      html  css  js  c++  java
  • P3817 小A的糖果

    题目描述

    小 A 有 nn 个糖果盒,第 ii 个盒中有 a_iai 颗糖果。

    小 A 每次可以从其中一盒糖果中吃掉一颗,他想知道,要让任意两个相邻的盒子中糖的个数之和都不大于 xx,至少得吃掉几颗糖。

    输入格式

    输入的第一行是两个用空格隔开的整数,代表糖果盒的个数 nn 和给定的参数 xx。

    第二行有 nn 个用空格隔开的整数,第 ii 个整数代表第 ii 盒糖的糖果个数 a_iai

    输出格式

    输出一行一个整数,代表最少要吃掉的糖果的数量。

    #include<bits/stdc++.h>
    using namespace std;
    int n,x,a[100001];
    long long b=0;
    int main(){
        cin>>n>>x;
        int i;
            for( i=1;i<=n;i++) 
        {
            cin>>a[i];
        }
    
        for(i=2;i<=n;i++) 
        {
            if(a[i]+a[i-1]>x)
            {
                b+=max(a[i]+a[i-1]-x,0);
            a[i]=max(x-a[i-1],0);
            }
            
        }
    
        cout<<b;
    }

    注:

    if(a[i]+a[i-1]>x) 这个判断一开始我没想起来加,后来调试的时候发现不加这个判断,会导致在相邻之和小于x的时候,会补糖果补到x,再想起来在题解区有人加了这个判断,我就知道自己哪里出错了。
  • 相关阅读:
    [NOI2001]炮兵阵地 状压DP
    [GDOI2014]拯救莫莉斯 状压DP
    [ZJOI2010]数字计数 数位DP
    [APIO2007]动物园 状压DP
    [SDOI2013]淘金 数位DP
    环状最大两段子段和
    [清华集训2014]奇数国
    [HNOI2003]激光炸弹
    [SCOI2010]字符串
    [SCOI2005]扫雷
  • 原文地址:https://www.cnblogs.com/lau1997/p/12594631.html
Copyright © 2011-2022 走看看