堆模板(STL版)
题目描述
如题,初始小根堆为空,我们需要支持以下3种操作:
操作1: 1 x 表示将x插入到堆中
操作2: 2 输出该小根堆内的最小数
操作3: 3 删除该小根堆内的最小数
输入输出格式
输入格式:
第一行包含一个整数N,表示操作的个数
接下来N行,每行包含1个或2个正整数,表示三种操作,格式如下:
操作1: 1 x
操作2: 2
操作3: 3
输出格式:
包含若干行正整数,每行依次对应一个操作2的结果。
输入输出样例
说明
时空限制:1000ms,128M
数据规模:
对于30%的数据:N<=15
对于70%的数据:N<=10000
对于100%的数据:N<=1000000(注意是6个0。。。不过不要害怕,经过编者实测,堆是可以AC的)
样例说明:
故输出为2、5
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。--分割线
堆,这是个比较令人熟悉的容器
ta无非是维持一棵具有单调性的树(从小到大 OR 从大到小)
所以它可以将一次搜索的时杂变成O(log n);
具体看代码吧
这里是stl的版本:(其实那后面那个手写版本是有问题的,可我太弱,目前还没调出来)
#include<bits/stdc++.h>
using namespace std; //priority_queue<int> q 大根堆
priority_queue<int, vector<int>, greater<int> > q;//小根堆 (<int>后要加‘ ’)
/*
q.top()//取得堆顶元素,并不会弹出
q.pop()//弹出堆顶元素
q.push()//往堆里面插入一个元素
q.empty()//查询堆是否为空,为空则返回1否则返回0
q.size()//查询堆内元素数量
*/
int main(){
int n,x;
cin>>n;
while(n--){
int t;
scanf("%d",&t);
if(t==){
scanf("%d",&x);
q.push(x);
}
if(t==){
printf("%d\n",q.top());
}
if(t==){
q.pop();
}
}
}
/*情怀手写版
int l;//大小
int dui[1000005];
void up_dui(int i,bool z){
if(i==1||z==0){return;}
if(dui[i/2]>dui[i]) {
swap(dui[i/2],dui[i]);
}
else {
z=0;
}
up_dui(i/2,z);
}
void down_dui(int i){
if(i>=l) return;
if(dui[i*2]<dui[i]){
swap(dui[i*2],dui[i]);
down_dui(i*2);
return;
}
if(dui[i*2+1]<dui[i]){
swap(dui[i*2+1],dui[i]);
down_dui(i*2+1);
return;
}
}
void pushn(){
int x;
scanf("%d",&x);
++l;
dui[l]=x;
up_dui(l,1);
}
void popn(){
printf("%d\n",dui[1]);
}
void deleten(){
dui[1]=dui[l];
dui[l]=0;
--l;
down_dui(1);
}
int main(){
cin>>n;
while(n--){
int t;
scanf("%d",&t);
if(t==1){
pushn();
}
if(t==2){
popn();
}
if(t==3){
deleten();
}
}
} */
//跪求路过DALAO指导(QAQ)
堆模板(STL版)的更多相关文章
- 树、图、堆、STL(来自菜鸡的"炒鸡"干粮)
树.图.堆.STL 图论基础 简单图: 没有自环,两个顶点之间最多只有一条边. 完全图: 一个简单图,每两个顶点之间都有一条边.一共有(n-1)*n/2条边. 二分图: 一个简单图,设G=(V,E)是 ...
- 可并堆模板题-mergeable heap
Description 有n个点,第i个点标号为i,有两种操作:0 x y 表示把x所在堆和y所在堆合并.1 x 表示询问x所在堆的最小权. Input 第一行两个整数n,m,表示有n个点m个操作. ...
- 【块状链表】AutSky_JadeK的块状链表模板+总结(STL版)
Part 1.块状链表. 定位 插入 删除 数组 O(1) O(n) O(n) 链表 O(n) O(1) O(1) 对于线性表的以上常见操作来说,数组和链表都无法有效地解决.但是,若我们将链表的每 ...
- 当堆遇到STL 代码焕发光芒
来自度娘的释义,堆的含义大概是这样的: 感性理解: 堆(英语:heap)是计算机科学中一类特殊的数据结构的统称.堆通常是一个可以被看做一棵树的数组对象.堆总是满足下列性质: 堆中某个节点的值总是不大于 ...
- 堆以及stl堆的使用
概念 性质: 1.堆是一颗完全二叉树,用数组实现. 2.堆中存储数据的数据是局部有序的. 最大堆:1.任意一个结点存储的值都大于或等于其任意一个子结点中存储的值. 2.根结点存储着该树 ...
- chap1 C++泛型技术基础--模板 #STL
0 缘起 有一点编程经验和积累,想系统的学习下STL,以前都是随意做的笔记,现在想着成主题的输出一下. 书的原型是ISBN:9787302421757 <C++泛型STL原理和应用>,是从 ...
- P3378 堆の模板
如果不是可并堆/带修堆/卡常题,一般都用优先队列实现. 很多O(nlogn)过不了的题都可以用蚯蚓的套路来实现!!! 优先队列带修用延迟删除法. 堆,可以简单的用优先队列来实现,也可以自己手打. #i ...
- 字典树模板( 指针版 && 数组版 )
模板 : #include<string.h> #include<stdio.h> #include<malloc.h> #include<iostream ...
- calc 多项式计算 (STL版和非STL版) -SilverN
计算(calc.cpp) [问题描述] 小明在你的帮助下,破密了Ferrari设的密码门,正要往前走,突然又出现了一个密码门,门上有一个算式,其中只有“(”,“)”,“0-9”,“+”,“-”,“*” ...
随机推荐
- presto-mysql/elasticsearch6.0.0安装部署测试,异种数据源关联查询入门实践
本文简单记录一次实践使用过程,涉及presto-mysql,presto-elasticsearch,文中参数未做注释,请参考官方文档,希望能帮到大家 1 下载安装 presto-0.228 < ...
- 上下文管理器及with的相关总结
什么是上下文管理器 基本语法 with EXPR as VAR: BLOCK 概念 上下文表达式:with open('test.txt') as f: 上下文管理器:open('test.txt') ...
- 关于 typeof 的暂时性死区,了解一下
将知识转化为能力,核心是掌握20%行业核心技能,把学习培养成习惯,持续深耕,用能力解决问题,方能持续成长!那么基础好,就是必须条件. 最近看 数据类型,知道数据类型判断有三种方式,typeof 是其中 ...
- [考试反思]0729NOIP模拟测试10
安度因:哇哦. 安度因:谢谢你. 第三个rank1不知为什么就来了.迷之二连?也不知道哪里来的rp 连续两次考试数学都占了比较大的比重,所以我非常幸运的得以发挥我的优势(也许是优势吧,反正数学里基本没 ...
- 【Elasticsearch 7 探索之路】(二)文档的 CRUD 和批量操作
上一篇,我们介绍了什么是 Elasticsearch,它能做什么用以及基本概念(索引 Index.文档 Document.类型 Type)理解.这篇主要对 文档的基本 CRUD 和 倒排索引进行讲解. ...
- SysTick系统定时器
1.SysTick定时器介绍 SysTick定时器也叫SysTick滴答定时器,它是Cortex-M3内核的一个 外设,被嵌入在 NVIC 中.它是一个24 位向下递减的定时器,每计数一 次所需时间为 ...
- day7-集合
一.定义变量是为了吹处理状态的变化,定义变量名是为了获取变量值.字符串.数字.列表.元组.字典都是为了更好的描述变量的状态1.可变不可变:变量名不变时,里面内容是否可以变化# 可变:列表.字典.修改变 ...
- Cauchy-Binet公式的证明 及 对Denton et al. (2019)的个人注(1)
------------恢复内容开始------------ 据新闻报道数学天才陶哲轩和3个物理学家研究出一个只用特征值就可以计算矩阵特征向量的公式, 我感觉很有趣, 这应该能够应用在很多领域中, 所 ...
- Maven系列第6篇:生命周期和插件详解,此篇看过之后在maven的理解上可以超越同级别90%的人!
maven系列目标:从入门开始开始掌握一个高级开发所需要的maven技能. 这是maven系列第6篇. 整个maven系列的内容前后是有依赖的,如果之前没有接触过maven,建议从第一篇看起,本文尾部 ...
- MathType转Word公式(OMML)
背景 由于之前个人喜欢在Word里做笔记,而有很多笔记里存在着大量的公式.在早期,由于对Word自身的公式的不理解,所以便使用了MathType这个工具来编写公式.但是现在本人已经转战到LatTeX了 ...