死亡

【问题描述】

现在有个位置可以打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的更多相关文章

  1. 济南学习D3T1__线性筛和阶乘质因数分解

    [问题描述] 从1− N中找一些数乘起来使得答案是一个完全平方数,求这个完全平方数最大可能是多少. [输入格式] 第一行一个数字N. [输出格式] 一行,一个整数代表答案对100000007取模之后的 ...

  2. 济南学习D2T1__折纸带

    他[问题描述]一张长度为n的纸带,我们可以从左至右编号为0 −n(纸带最左端标号为0) .现在有m次操作,每次将纸带沿着某个位置进行折叠,问所有操作之后纸带的长度是多少.[输入格式]第一行两个数字n, ...

  3. 济南学习D2T2__数学分析题

    [问题描述]有N个数,随机选择一段区间,如果这段区间的所有数的平均值在[l,r]中则你比较厉害.求你比较厉害的概率.[输入格式]第一行有三个数N,l,r,含义如上描述.接下来一行有N个数代表每一个数的 ...

  4. 济南学习 Day 5 T1 pm

    欧拉函数(phi)题目描述: 已知(N),求phi(N). 输入说明: 正整数N. 输出说明: 输出phi(N). 样例输入: 8 样例输出: 4 数据范围: 对于20%的数据,N<=10^5 ...

  5. 济南学习 Day 4 T1 pm

    幸运数字(number)Time Limit:1000ms Memory Limit:64MB题目描述LYK 最近运气很差,例如在 NOIP 初赛中仅仅考了 90 分,刚刚卡进复赛,于是它决定使用一些 ...

  6. 济南学习 Day 4 T2 am

    LYK 与实验室(lab)Time Limit:5000ms Memory Limit:64MB题目描述LYK 在一幢大楼里,这幢大楼共有 n 层,LYK 初始时在第 a 层上.这幢大楼有一个秘密实验 ...

  7. 济南学习 Day 4 T1 am

    完美的序列(sequence)Time Limit:1000ms Memory Limit:64MB题目描述LYK 认为一个完美的序列要满足这样的条件:对于任意两个位置上的数都不相同.然而并不是所有的 ...

  8. 济南学习 Day 3 T3 pm

    仙人掌(cactus)Time Limit:1000ms Memory Limit:64MB题目描述LYK 在冲刺清华集训(THUSC) !于是它开始研究仙人掌,它想来和你一起分享它最近研究的结果. ...

  9. 济南学习 Day 3 T2 pm

    LYK 快跑!(run)Time Limit:5000ms Memory Limit:64MB题目描述LYK 陷进了一个迷宫! 这个迷宫是网格图形状的. LYK 一开始在(1,1)位置, 出口在(n, ...

随机推荐

  1. mysql存储过程定义者

    1. 执行update mysql.proc set DEFINER='root@%' WHERE NAME='p_update_rim_batch_log' AND db='otherdataonl ...

  2. Linux 网络排错检查思路

    Linux 网络排错检查思路 graph TD A[当网络不通时] --> B{ping想要访问的地址,<br>如www.runoob.com} B --> |不通| C{pi ...

  3. nrm : 无法加载文件 C:\Users......因为在此系统上禁止运行脚本。

    1.以管理员身份运行powershell 2.使用set-ExecutionPolicy RemoteSigned命令将计算机上的执行策略更改为 RemoteSigned,输入Y确定 3.查看计算机执 ...

  4. IDEA maven项目报错,找不到或无法找到主类

    最近在写UDF,依赖复制的公司的依赖, <dependency> <groupId>org.apache.hive</groupId> <artifactId ...

  5. jdbc事务、连接池概念、c3p0、Driud、JDBC Template、DBUtils

    JDBC 事务控制 什么是事务:一个包含多个步骤或者业务操作.如果这个业务或者多个步骤被事务管理,则这多个步骤要么同时成功,要么回滚(多个步骤同时执行失败),这多个步骤是一个整体,不可分割的. 操作: ...

  6. [每日一题]面试官问:谈谈你对ES6的proxy的理解?

    [每日一题]面试官问:谈谈你对ES6的proxy的理解? 关注「松宝写代码」,精选好文,每日一题 作者:saucxs | songEagle 一.前言 2020.12.23 日刚立的 flag,每日一 ...

  7. Github美化 添加徽章

    Github美化 添加徽章 0. 前言 1. 准备 2. 开始 a. 打开shields.io b.制作静态徽章 c.制作动态徽章 d. 结果 3.额外 0. 前言 之前看见很多大项目都有很多勋章,比 ...

  8. 使用python做一个IRC在线下载器

    使用python做一个IRC在线下载器 1.开发流程 2.软件流程 3.开始 3.0 准备工作 3.1寻找API接口 3.2 文件模块 3.2.1 选择文件弹窗 3.2.2 提取文件名 3.2.2.1 ...

  9. 【Flutter】容器类组件简介

    前言 容器类Widget和布局类Widget都作用于其子Widget,不同的是: 布局类Widget一般都需要接收一个widget数组(children),他们直接或间接继承自(或包含)MultiCh ...

  10. linux下的文件类型

    在Linux中一切设备皆文件,首先来看一下Linux下的文件都有哪些分类,也就是文件类型 文件类型:普通文件(包括shell脚本,文档,音频,视频).目录文件.设备文件(又细分为字符设备文件和块设备文 ...