P3817 小A的糖果
Posted lau1997
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,再想起来在题解区有人加了这个判断,我就知道自己哪里出错了。
以上是关于P3817 小A的糖果的主要内容,如果未能解决你的问题,请参考以下文章