济南学习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, ...
随机推荐
- 微信小程序-页面下拉
微信小程序当滑动到最顶部和最底部时,继续下拉,会将整个页面拉下去或者拉上去,本来以为是客户端自有的特性,就没去管他,直到我的禅道出现了这个记录... 其实这个问题是可以解决的,只需要在你不想出现在此情 ...
- 容器编排系统K8s之Dashboard部署
前文我们了解了k8s的访问控制第三关准入控制相关插件的使用,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14220402.html:今天我们来了解下k8s的 ...
- mysql8.0.x中datasource信息
driverClassName: com.mysql.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSourceurl: jdbc:mysql:// ...
- RPC框架从0到10
RPC(Remote Procedure Call) 从单机走向分布式,产生了很多分布式的通信方式 最古老也是最有效,并且永不过时的,TCP/UDP的二进制传输,事实上所有的通信方式归根结底都是TCP ...
- Javascript函数闭包及案例详解
什么情况下会形成闭包,什么是闭包 闭包(Closure):函数和其周围的状态(词法环境)的引用捆绑在一起形成闭包 可以在另一个作用域中调用一个函数的内部函数并访问到该函数的作用域中的成员 下面来看一个 ...
- Sentinel限流之快速失败和漏桶算法
距离上次总结Sentinel的滑动窗口算法已经有些时间了,原本想着一口气将它的core模块全部总结完,但是中间一懒就又松懈下来了,这几天在工作之余又重新整理了一下,在这里做一个学习总结. 上篇滑动窗口 ...
- Nginx集成Naxsi防火墙
前言 因工作原因,接触到了WAF,今天部署了一下Naxsi,记录一下 GitHub 正文 环境 Centos 7 下载 更新yum yum update -y 安装必要依赖 yum install g ...
- [C#.NET 拾遗补漏]14:使用结构体实现共用体
在 C 和 C# 编程语言中,结构体(Struct)是值类型数据结构,它使得一个单一变量可以存储多种类型的相关数据.在 C 语言中还有一种和结构体非常类似的语法,叫共用体(Union),有时也被直译为 ...
- H5手机网页元素识别
- Mac Navicat premium 12 连接mysql8.0.21出现 'caching_sha2_password' 解决方案
1.通过命令 select user,plugin from user where user='root'; 我们可以发现加密方式是caching_sha2_password. 2. 修改查看加密方 ...