【模板】堆

题目描述

如题,初始小根堆为空,我们需要支持以下3种操作:

操作1: 1 x 表示将x插入到堆中

操作2: 2 输出该小根堆内的最小数

操作3: 3 删除该小根堆内的最小数

输入输出格式

输入格式:

第一行包含一个整数N,表示操作的个数

接下来N行,每行包含1个或2个正整数,表示三种操作,格式如下:

操作1: 1 x

操作2: 2

操作3: 3

输出格式:

包含若干行正整数,每行依次对应一个操作2的结果。

输入输出样例

输入样例#1:

5
1 2
1 5
2
3
2

输出样例#1:

2
5

说明

时空限制:1000ms,128M

数据规模:

对于30%的数据:N<=15

对于70%的数据:N<=10000

对于100%的数据:N<=1000000(注意是6个0。。。不过不要害怕,经过编者实测,堆是可以AC的)

#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
priority_queue<int,vector<int>,greater<int> >q;
int main()
{int n;scanf("%d",&n);int pd;for(int i=1;i<=n;i++){scanf("%d",&pd);if(pd==1) {int v;scanf("%d",&v);q.push(v);}if(pd==2){printf("%d\n",q.top());}if(pd==3){q.pop();}}return 0;
}

View Code

一直不会stl堆(以前一直手写堆),今天终于学会了,谢谢cyc的指导;

下来是一道运用stl堆的题----合并果子;

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
int n;
priority_queue<int,vector<int>,greater<int> >q;
int map[10010];
int main()
{scanf("%d",&n);int ans=0;for(int i=1;i<=n;i++) scanf("%d",&map[i]),q.push(map[i]);for(int i=2;i<=n;i++){int v=q.top();q.pop();int u=q.top();q.pop();ans+=v+u;q.push(v+u);}printf("%d",ans);return 0;
}

View Code

eg:1724: [Usaco2006 Nov]Fence Repair 切割木板     逆的合并果子

转载于:https://www.cnblogs.com/12fs/p/7367898.html

stl 优先队列(堆)相关推荐

  1. STL优先队列实现堆(模板 附力扣题目)

    讲解视频:https://www.bilibili.com/video/BV12i4y1f7ky/ 堆的本质 堆是一种特殊的完全二叉树.每一个节点的值都大于等于或者小于等于其孩子节点的值. 堆的操作时 ...

  2. stl优先队列定义可以吗_C ++ STL | 用户定义的优先级队列比较器

    stl优先队列定义>可以吗 In this article, we are going to see how to write your comparator function for prio ...

  3. [算法系列]优先队列,堆与堆排序

    优先队列,堆与堆排序 1 优先队列 有时我们在处理有序元素时,并不一定要求他们全部有序. 很多情况下我们会收集一些元素, 处理当前最大的元素, 然后再收集更多元素, 再处理当前最大元素 - 这种情况下 ...

  4. c语言将数组的列项向左移动,【数据结构与算法分析——C语言描述】第六章:优先队列(堆)...

    第六章:优先队列(堆) [TOC] 思考如下场景,老师布置了很多作业,现在你需要将作业打印出来,你将作业文件依照队列的形式放入待打印列表中,但此时,你希望最重要(或者是马上就要上交)的作业优先打印出来 ...

  5. C++STL优先队列小根堆大根堆自定义的应用

    小根堆 greater #include<iostream> #include<queue> using namespace std; priority_queue<in ...

  6. 【BHOJ 女娲加农炮 |、||】贪心 | 优先队列 | 堆 | E

    这次我们通过两道例题来总结一下优先队列的用法和实现: 目录: [BHOJ 1512]女娲加农炮 [BHOJ 1517]女娲加农炮II [BHOJ 1512]女娲加农炮 核心:贪心 + 优先队列 URL ...

  7. java合并果子_C++(STL)树-堆结构练习——合并果子之哈夫曼树

    priority_queue 对于基本类型的使用方法相对简单. 他的模板声明带有三个参数,priority_queue Type 为数据类型, Container 为保存数据的容器,Functiona ...

  8. NOIp 数据结构专题总结 (1):STL、堆、并查集、ST表、Hash表

    系列索引: NOIp 数据结构专题总结 (1) NOIp 数据结构专题总结 (2) STL structure std::vector #include <vector> std::vec ...

  9. C++ STL 优先队列

    //优先队列 //Priority_queue //STL #include<iostream> #include<cstdio> #include<cstdlib> ...

最新文章

  1. java zookeeper_Java zookeeper开发实例
  2. java检索字符串并提取_eclipse 项目中搜索资源(类方法,文件名,文件中的字符串)...
  3. 阿里云网盘,开放申请啦!非会员下载 10MB/s!有图有真相!
  4. JAVA之JVM分代垃圾回收策略(一)
  5. 【知识发现】隐语义模型LFM算法python实现(一)
  6. UA MATH567 高维统计II 随机向量11 kernel的构造 用内积替换反三角函数
  7. 2019-10-06 线性系统的理解
  8. c语言如何判断数据是否符合正态分布_如何判断机器学习数据集是否是线性的?...
  9. API接口设计 注意问题
  10. [转]Java学习路线图(完整详细2019版)
  11. JS window对象 返回前一个浏览的页面 back()方法,加载 history 列表中的前一个 URL。 语法: window.history.back();...
  12. Linux下性能测量和调试诊断工具Systemtap
  13. 浅析下关于js的 逗号运算符 和 改变this指向 的一道题(mv to git)
  14. 让PHP查询mysql时不区分大小写
  15. 如何在Eclipse配置PyDev插件
  16. centos绑定多个ip CentOS一个网卡设置多个IP
  17. Dijkstra算法(matlab实现)
  18. c 语言与试验系统,Turbo C/C++软件学习下载
  19. 2021最新 武汉互联网公司
  20. codeforces NCPC2015 GYM 100781A Adjoin the Networks 圖的直徑

热门文章

  1. 5个很好用的.net 分析工具
  2. P2P之UDP穿透NAT的原理与实现
  3. 大数据之-Hadoop3.x_MapReduce_outputformat概述---大数据之hadoop3.x工作笔记0120
  4. 超大Sql文件_超大文件_mysql数据导入到mycat数据库_亲测好用---Linux运维工作笔记053
  5. 内网穿透工作笔记001---UDP通信_内网通信原理_P2P点对点通信原理
  6. K8S_Google工作笔记0002---K8S介绍和特性
  7. Netty工作笔记0044---scheduledTaskQueue
  8. ASP.Net学习笔记009--ASP.Net上次课程内容补充
  9. 使用string定义一个变量如何输出
  10. python编程(pyautogui库)