Garbage Disposal(模拟垃圾装垃圾口袋)
Garbage Disposal
Description
Enough is enough. Too many times it happened that Vasya forgot to dispose of garbage and his apartment stank afterwards. Now he wants to create a garbage disposal plan and stick to it.
For each of next n
days Vasya knows ai — number of units of garbage he will produce on the i-th day. Each unit of garbage must be disposed of either on the day it was produced or on the next day. Vasya disposes of garbage by putting it inside a bag and dropping the bag into a garbage container. Each bag can contain up to k
units of garbage. It is allowed to compose and drop multiple bags into a garbage container in a single day.
Being economical, Vasya wants to use as few bags as possible. You are to compute the minimum number of bags Vasya needs to dispose of all of his garbage for the given n
days. No garbage should be left after the n
-th day.
Input
The first line of the input contains two integers n
and k (1≤n≤2⋅105,1≤k≤109) — number of days to consider and bag's capacity. The second line contains n space separated integers ai (0≤ai≤109) — the number of units of garbage produced on the i
-th day.
Output
Output a single integer — the minimum number of bags Vasya needs to dispose of all garbage. Each unit of garbage should be disposed on the day it was produced or on the next day. No garbage can be left after the n
-th day. In a day it is allowed to compose and drop multiple bags.
Sample Input
3 2
3 2 1
3
5 1
1000000000 1000000000 1000000000 1000000000 1000000000
5000000000
3 2
1 0 1
2
4 4
2 8 4 1
4
题意:
有n天,第i天有a[i]个垃圾,每天的垃圾最多能留到第二天扔,每个垃圾口袋最多装k个垃圾,问,最少用多少个垃圾口袋能把所有的垃圾装完。
思路:
把每天的垃圾数分两种,一种是刚好能用垃圾口袋装下的;一种是还剩余的垃圾,这个时候,把剩余的垃圾留到第二天去处理,将第二天的垃圾数减掉(k-剩余的),让第一天剩余的垃圾和第二天里的垃圾凑成一个垃圾口袋
如果,第二天的垃圾数减去第一天需要的后小于0,这个时候就让第二天的垃圾数等于0。然后输出垃圾口袋数就好
注意ans要开long long
1 #include<algorithm>
2 #include<cstdio>
3 #include<iostream>
4 using namespace std;
5 int main(){
6 int n,k;
7 while(~scanf("%d %d",&n,&k)) {
8 int a[200005];
9 for(int i=1;i<=n;i++)
10 scanf("%d",&a[i]);
11 long long ans=0,t=0;
12 for(int i=1;i<=n;i++) {
13 ans+=a[i]/k;//当天刚好能装袋的垃圾
14 t=a[i]%k;//剩余没能当天装袋的垃圾
15 if(t){//如果剩余的垃圾>0
16
17 a[i+1]-=k-t;//将第二天的垃圾数减去第一天剩余装袋的垃圾所需要的垃圾
18 if(a[i+1]<0)//如果相见之后垃圾数<0
19 a[i+1]=0;//让垃圾数=0
20 ans++;//垃圾口袋数++
21 }
22 }
23 printf("%lld\n",ans);
24 }
25 return 0;
26 }
Garbage Disposal(模拟垃圾装垃圾口袋)的更多相关文章
- 【JVM从小白学成大佬】4.Java虚拟机何谓垃圾及垃圾回收算法
在Java中内存是由虚拟机自动管理的,虚拟机在内存中划出一片区域,作为满足程序内存分配请求的空间.内存的创建仍然是由程序猿来显示指定的,但是对象的释放却对程序猿是透明的.就是解放了程序猿手动回收内存的 ...
- 【java】对象变成垃圾被垃圾回收器gc收回前执行的操作:Object类的protected void finalize() throws Throwable
package 对象被回收前执行的操作; class A{ @Override protected void finalize() throws Throwable { System.out.prin ...
- java什么时候进行垃圾回收,垃圾回收的执行流程
java的垃圾回收分为 三个区域新生代 老年代 永久代 一个对象实例化时 先去看伊甸园有没有足够的空间如果有 不进行垃圾回收 ,对象直接在伊甸园存储.如果伊甸园内存已满,会进行一次minor gc然后 ...
- 2018-2019 ICPC, NEERC, Southern Subregional Contest
目录 2018-2019 ICPC, NEERC, Southern Subregional Contest (Codeforces 1070) A.Find a Number(BFS) C.Clou ...
- 【python进阶】Garbage collection垃圾回收2
前言 在上一篇文章[python进阶]Garbage collection垃圾回收1,我们讲述了Garbage collection(GC垃圾回收),画说Ruby与Python垃圾回收,Python中 ...
- PHP-----浅谈垃圾回收机制
前言 大多数编程语言都会有自身的垃圾回收机制,php也不例外.经常听很多人说gc,也就是垃圾回收器,全程为Garbage Collection. 在php5.3之前,是不包括垃圾回收机制的,也没有专门 ...
- 深入探究JVM之垃圾回收器
@ 目录 前言 正文 一.垃圾收集算法 标记-复制 标记-清除 标记-整理 分代回收 二.常用的垃圾回收器 Serial/SerialOld ParNew Parallel Scavenge/Para ...
- java虚拟机入门(四)-垃圾回收的故事
谈到垃圾回收器,java程序员骄傲了起来,c语言你是够快,但是你有管家帮你打扫吗,还不是得靠自己的一双手,有钱就是任性.既然如此令java程序员骄傲的垃圾回收器,怎能让人不想去一探究竟呢! 垃圾回收器 ...
- CLR via C#深解笔记七 - 自动内存管理(垃圾回收)
每个应用程序都要使用这样或者那样的资源,比如文件.内存缓冲区.屏幕空间.网络连接.数据库资源等.事实上,在面向对象的环境中,每个类型都代表可供程序使用的一种资源. 要使用这些资源,必须为代表资源的类型 ...
随机推荐
- mail语法
在Linux系统下mail命令的用法 在Linux系统下mail命令的测试 1. 最简单的一个例子: mail -s test admin@aispider.com 这条命令的结果是发一封标题为tes ...
- day 06 字符串和列表的方法
一.整形int 定义方式: age=18 #调用age=int(18)的方法,自动调用 n=int("123") #只能转换纯数字类型 二:浮点型float 定义方式 sal ...
- 剑指Offer 57. 二叉树的下一个结点 (二叉树)
题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 题目地址 https://www.nowcoder.c ...
- python+flask开发小白第二天
使用VSCode编译python web页面 1.先从最基础的说起吧,关于VSCode的使用: 运行python程序与运行java,c,c++程序一样,需要新建一个文件,第一个文件建议不要新建在本地的 ...
- Linux系统-禁ping
1) Add the following line to your /etc/sysctl.conf net.ipv4.icmp_echo_ignore_all=1 Then : sysctl -p ...
- 软件工程 week 02
一.地址链接 1.作业地址:https://edu.cnblogs.com/campus/nenu/2016CS/homework/2110 2.git仓库地址:https://git.coding. ...
- springboot 缓存架构
线程内部缓存:a. 局部变量HashMap, 方法间传递 b. 使用ThreadLocal 本地缓存:单jvm内共享 可以使用(Concurrent)HashMap自己实现,也可以使用GuavaCa ...
- hsdfz -- 6.18 -- day3
第三次被hn菜和hn话支配…… 相比起前两天好一点,但是由于前面时间安排的太散(睡着了……)导致c题DP差一点肝出来(所以最后没有…… 恩就算肝出来DP也只有30分,这次好歹是有DP思路了,继续康复吧 ...
- MVC 模式
1.MVC 模式简介 MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式.这种模式用于应用程序的分层开发.Model(模型):模型代表一个存取数据的对象或 JAV ...
- python的set处理二维数组转一维数组
for splitValue in set(dataset[:, featureIndex].tolist()): 首先set是一个无序,无重复的数据结构,所以很多时候使用它来进行去重:但是set接收 ...