[牛客小白月赛4 H] 相邻的糖果
2018-06-16 23:34
344 查看
Description
有n个盒子摆成一排,每个盒子内都有ai个糖果。
现在你可以执行以下操作:
·你可以选择任意一个盒子,在选择的盒子内吃掉一个糖果。
对你的要求如下:
·任何m个相邻的盒子内糖果数量不能超过x个。
请问,实现要求的最少操作次数是多少?
Input
第一行三个数字n, m, x \((2 ≤ n,m ≤ 10^6,1 ≤ x ≤ 10^9)\)。第二行n个数字\((1 ≤ ai ≤ 10^9)\)。
Output
输出一个操作数,代表实现要求的最少操作数。
Solution
感觉有点像滑动窗口。
从左往右扫过,维护当前区间的和。
如果大于 \(x\),那么令 \(val[i]-=(tot-x),tot=x\)。
注意左边界即
if(i>m) tot-=val[i]
这样可以解决 \(val[i]\) “不够” 的情况。
Code
#include<cstdio> #define N 1000005 #define int long long int n,m,x; int val ,ans; signed main(){ scanf("%lld%lld%lld",&n,&m,&x); int tot=0; for(int i=1;i<=n;i++){ scanf("%lld",&val[i]); tot+=val[i]; if(i>m) tot-=val[i-m]; if(tot>x) val[i]-=tot-x,ans+=tot-x,tot=x; } printf("%lld\n",ans); return 0; }
相关文章推荐
- 牛客小白月赛1 A 简单题 【数学】
- 牛客小白月赛1 B 简单题2 【数学】
- 牛客小白月赛1 E 圆与三角形 【数学】
- 牛客小白月赛1 H 写真がとどいています 【循环】
- 牛客小白月赛1题目题解
- 牛客小白月赛1 J おみやげをまらいました 【MAP】
- 牛客小白月赛1 A题 Etéreo 是个爱学习的好孩子
- 牛客小白月赛1 I あなたの蛙が帰っています【卡特兰数应用】
- 牛客小白月赛1 C 分元宵【快速幂】
- 牛客网小白月赛1 B题
- 牛客笔试:计算糖果
- 牛客网 小白月赛G题 DP
- Django小白教程之Django用户注册与登录
- 程序小白天天打卡
- 职场小白,一路走来的心路历程
- C语言实验——买糖果
- 小白谈谈对JS原型链的理解
- 学习FFMPEG小白须知
- 小白在MAC安装ruby环境以及下载和安装CocoaPods
- 小白学习-Django