济南学习D1T5__HEAP
死亡
【问题描述】
现在有个位置可以打sif,有个人在排队等着打sif。现在告诉你前个人每个人需要多长的时间打sif,问你第个人什么时候才能打sif。(前个人必须按照顺序来)
【输入格式】
第一行两个整数如上所述。
接下来行每行一个整数代表每个人所需要用的时间。
【输出格式】
一行一个整数表示答案。
【样例输入】
3 2
1
1
1
【样例输出】
1
【样例解释】
山里有座庙。
【数据规模与约定】
对于的数据,每个人所需用的时间不超过。
|
测试点 |
测试点 |
||||
|
1 |
10 |
10 |
1 |
5000 |
500 |
|
2 |
20 |
10 |
2 |
100000 |
5000 |
|
3 |
50 |
10 |
3 |
100000 |
10000 |
|
4 |
1000 |
500 |
4 |
100000 |
20000 |
|
5 |
2000 |
500 |
5 |
100000 |
50000 |
_________________________________________________________________________________
这个题一看就是贪心,每一个人都找用时最少的,然后在加上去。维护时间可以用优先队列或是堆。堆太难写了,而优先队列有人反映很慢,于是就拿这个题练习了<algorithm>中的堆。
主要有四个函数
1、建堆make_heap(begin,end,cmp)
将数组[begin,end)内的元素建堆,默认为大头堆,如需建小头堆加入greater<int>(),如果元素为结构体,则需重载运算符<.
2、加入堆push_heap(begin,end,cmp)
将元素(end-1)加入堆,原本对的范围为[begin,end-1)
3、弹出堆pop_heap(begin,end,cmp)
将堆顶(begin)与堆得最后一个元素(end-1)互换,从新调整堆。完成后堆的范围变成[begin,end-1)
4、堆排序sort_heap(begin,end,cmp)
将堆得元素排序,默认为从小到大,加入greater<int>()后变为从大到小
_________________________________________________________________________________
1 #include<cstdio>
2 #include<iostream>
3 #include<cstring>
4 #include<algorithm>
5
6 using namespace std;
7 int n,m;
8 int sz[100010];
9 void readint(int &x)
10 {
11 char c=getchar();
12 for(;c>'9'||c<'0';c=getchar());
13 x=0;
14 for(;c<='9'&&c>='0';c=getchar())x=x*10-'0'+c;
15 }
16 void print()
17 {
18 for(int i=0;i<n;i++)
19 cout<<sz[i]<<" ";
20 cout<<endl;
21 }
22 int main()
23 {
24 freopen("death.in","r",stdin);
25 freopen("death.out","w",stdout);
26 readint(n);readint(m);
27 for(int i=0;i<n;i++)
28 {
29 readint(sz[i]);
30 }
31 make_heap(sz,sz+m,greater<int>());
32 for(int i=m;i<n;i++)
33 {
34 pop_heap(sz,sz+m,greater<int>());
35 sz[m-1]+=sz[i];
36 push_heap(sz,sz+m,greater<int>());
37 }
38 cout<<sz[0]<<endl;
39 fclose(stdin);
40 fclose(stdout);
41 return 0;
42 }
济南学习D1T5__HEAP的更多相关文章
- 济南学习D3T1__线性筛和阶乘质因数分解
[问题描述] 从1− N中找一些数乘起来使得答案是一个完全平方数,求这个完全平方数最大可能是多少. [输入格式] 第一行一个数字N. [输出格式] 一行,一个整数代表答案对100000007取模之后的 ...
- 济南学习D2T1__折纸带
他[问题描述]一张长度为n的纸带,我们可以从左至右编号为0 −n(纸带最左端标号为0) .现在有m次操作,每次将纸带沿着某个位置进行折叠,问所有操作之后纸带的长度是多少.[输入格式]第一行两个数字n, ...
- 济南学习D2T2__数学分析题
[问题描述]有N个数,随机选择一段区间,如果这段区间的所有数的平均值在[l,r]中则你比较厉害.求你比较厉害的概率.[输入格式]第一行有三个数N,l,r,含义如上描述.接下来一行有N个数代表每一个数的 ...
- 济南学习 Day 5 T1 pm
欧拉函数(phi)题目描述: 已知(N),求phi(N). 输入说明: 正整数N. 输出说明: 输出phi(N). 样例输入: 8 样例输出: 4 数据范围: 对于20%的数据,N<=10^5 ...
- 济南学习 Day 4 T1 pm
幸运数字(number)Time Limit:1000ms Memory Limit:64MB题目描述LYK 最近运气很差,例如在 NOIP 初赛中仅仅考了 90 分,刚刚卡进复赛,于是它决定使用一些 ...
- 济南学习 Day 4 T2 am
LYK 与实验室(lab)Time Limit:5000ms Memory Limit:64MB题目描述LYK 在一幢大楼里,这幢大楼共有 n 层,LYK 初始时在第 a 层上.这幢大楼有一个秘密实验 ...
- 济南学习 Day 4 T1 am
完美的序列(sequence)Time Limit:1000ms Memory Limit:64MB题目描述LYK 认为一个完美的序列要满足这样的条件:对于任意两个位置上的数都不相同.然而并不是所有的 ...
- 济南学习 Day 3 T3 pm
仙人掌(cactus)Time Limit:1000ms Memory Limit:64MB题目描述LYK 在冲刺清华集训(THUSC) !于是它开始研究仙人掌,它想来和你一起分享它最近研究的结果. ...
- 济南学习 Day 3 T2 pm
LYK 快跑!(run)Time Limit:5000ms Memory Limit:64MB题目描述LYK 陷进了一个迷宫! 这个迷宫是网格图形状的. LYK 一开始在(1,1)位置, 出口在(n, ...
随机推荐
- mysql存储过程定义者
1. 执行update mysql.proc set DEFINER='root@%' WHERE NAME='p_update_rim_batch_log' AND db='otherdataonl ...
- Linux 网络排错检查思路
Linux 网络排错检查思路 graph TD A[当网络不通时] --> B{ping想要访问的地址,<br>如www.runoob.com} B --> |不通| C{pi ...
- nrm : 无法加载文件 C:\Users......因为在此系统上禁止运行脚本。
1.以管理员身份运行powershell 2.使用set-ExecutionPolicy RemoteSigned命令将计算机上的执行策略更改为 RemoteSigned,输入Y确定 3.查看计算机执 ...
- IDEA maven项目报错,找不到或无法找到主类
最近在写UDF,依赖复制的公司的依赖, <dependency> <groupId>org.apache.hive</groupId> <artifactId ...
- jdbc事务、连接池概念、c3p0、Driud、JDBC Template、DBUtils
JDBC 事务控制 什么是事务:一个包含多个步骤或者业务操作.如果这个业务或者多个步骤被事务管理,则这多个步骤要么同时成功,要么回滚(多个步骤同时执行失败),这多个步骤是一个整体,不可分割的. 操作: ...
- [每日一题]面试官问:谈谈你对ES6的proxy的理解?
[每日一题]面试官问:谈谈你对ES6的proxy的理解? 关注「松宝写代码」,精选好文,每日一题 作者:saucxs | songEagle 一.前言 2020.12.23 日刚立的 flag,每日一 ...
- Github美化 添加徽章
Github美化 添加徽章 0. 前言 1. 准备 2. 开始 a. 打开shields.io b.制作静态徽章 c.制作动态徽章 d. 结果 3.额外 0. 前言 之前看见很多大项目都有很多勋章,比 ...
- 使用python做一个IRC在线下载器
使用python做一个IRC在线下载器 1.开发流程 2.软件流程 3.开始 3.0 准备工作 3.1寻找API接口 3.2 文件模块 3.2.1 选择文件弹窗 3.2.2 提取文件名 3.2.2.1 ...
- 【Flutter】容器类组件简介
前言 容器类Widget和布局类Widget都作用于其子Widget,不同的是: 布局类Widget一般都需要接收一个widget数组(children),他们直接或间接继承自(或包含)MultiCh ...
- linux下的文件类型
在Linux中一切设备皆文件,首先来看一下Linux下的文件都有哪些分类,也就是文件类型 文件类型:普通文件(包括shell脚本,文档,音频,视频).目录文件.设备文件(又细分为字符设备文件和块设备文 ...