Boxes and Candies
Posted zangzang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Boxes and Candies相关的知识,希望对你有一定的参考价值。
问题 G: Boxes and Candies
时间限制: 1 Sec 内存限制: 128 MB提交: 154 解决: 62
[提交][状态][讨论版][命题人:admin]
题目描述
There are N boxes arranged in a row. Initially, the i-th box from the left contains ai candies.
Snuke can perform the following operation any number of times:
Choose a box containing at least one candy, and eat one of the candies in the chosen box.
His objective is as follows:
Any two neighboring boxes contain at most x candies in total.
Find the minimum number of operations required to achieve the objective.
Constraints
2≤N≤105
0≤ai≤109
0≤x≤109
Snuke can perform the following operation any number of times:
Choose a box containing at least one candy, and eat one of the candies in the chosen box.
His objective is as follows:
Any two neighboring boxes contain at most x candies in total.
Find the minimum number of operations required to achieve the objective.
Constraints
2≤N≤105
0≤ai≤109
0≤x≤109
输入
The input is given from Standard Input in the following format:
N x
a1 a2 … aN
N x
a1 a2 … aN
输出
Print the minimum number of operations required to achieve the objective.
样例输入
3 3
2 2 2
样例输出
1
提示
Eat one candy in the second box. Then, the number of candies in each box becomes (2,1,2).
#include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <algorithm> #include <iostream> using namespace std; typedef long long int LL; int main() { long long int ans = 0; int a[100005]; int n,x; scanf("%d %d",&n,&x); for(int i=0;i<n;i++) { scanf("%d",&a[i]); } if(a[0]>x) { int t = a[0]-x; ans+=t; a[0]-=t; } for(int i=1;i<n;i++) { if(a[i]+a[i-1]>x) { int t = x-a[i-1]; ans+=a[i]-t; a[i]-=a[i]-t; } } printf("%lld",ans); }
贪心
以上是关于Boxes and Candies的主要内容,如果未能解决你的问题,请参考以下文章
Henu ACM Round#19 E Om Nom and Candies
HDU 5407 CRB and Candies(LCM +最大素因子求逆元)
codeforces 768F Barrels and boxes
A. Dawid and Bags of Candies ( Codeforces Round #588 (Div. 2) )