首页 > 其他分享 >【模板】堆

【模板】堆

时间:2024-11-28 15:25:53浏览次数:11  
标签:数列 int 最小 leq 模板 op

【模板】堆

题目描述

给定一个数列,初始为空,请支持下面三种操作:

1.给定一个整数 \(x\),请将 \(x\) 加入到数列中。
2.输出数列中最小的数。
3.删除数列中最小的数(如果有多个数最小,只删除 \(1\) 个)。

输入格式

第一行是一个整数,表示操作的次数 \(n\)。
接下来 \(n\) 行,每行表示一次操作。每行首先有一个整数 \(op\) 表示操作类型。

  • 若 \(op = 1\),则后面有一个整数 \(x\),表示要将 \(x\) 加入数列。
  • 若 \(op = 2\),则表示要求输出数列中的最小数。
  • 若 \(op = 3\),则表示删除数列中的最小数。如果有多个数最小,只删除 \(1\) 个。

输出格式

对于每个操作 \(2\),输出一行一个整数表示答案。

样例 #1

样例输入 #1

5
1 2
1 5
2
3
2

样例输出 #1

2
5

提示

【数据规模与约定】

  • 对于 \(30\%\) 的数据,保证 \(n \leq 15\)。
  • 对于 \(70\%\) 的数据,保证 \(n \leq 10^4\)。
  • 对于 \(100\%\) 的数据,保证 \(1 \leq n \leq 10^6\),\(1 \leq x \lt 2^{31}\),\(op \in \{1, 2, 3\}\)。



题解

一道模板题罢了

#include <iostream>
#include <queue>
using namespace std;

int main()
{

	priority_queue<int, vector<int>, greater<int>> q; // 使用最小堆

	int _;cin >> _;

	while (_--) {

		int op; cin >> op;

		switch (op)
		{
			// 输入 
		case 1:
			int x; cin >> x;
			q.push(x);
			break;

			// 输出
		case 2:
			cout << q.top() << endl;
			break;
			// 删除
		case 3:
			if (!q.empty())q.pop();
			break;
		}
	}
	return 0;
}

标签:数列,int,最小,leq,模板,op
From: https://www.cnblogs.com/phuzzz/p/18574341

相关文章

  • 【模板】AC自动机(不同模板,不同难度)
    **注意query()函数**#include<bits/stdc++.h>usingnamespacestd;constintN=1e6+10;intn;chars[N],t[N];structAC{ intcnt,fail; intchild[27];}tr[N<<1];inttot;voidbuild(chars[]){ intlen=strlen(s+1); intu=0; for(inti=1;i&......
  • ABAP 通过模板上传文件进行批导
    主要实现了以下步骤:1、让用户下载模板。2、根据模板填写数据选择文件进行上传。3、根据用户数据进行存在性判断,存在则可以改,不存在不可以修改。4、通过BAPI或者BDC实现程序自动批量修改。5、将修改结果显示给用户,失败给出失败信息,消息灯变红,成功显示成功,消息灯为绿。具体......
  • 【题解】洛谷P5906:【模板】回滚莫队&不删除莫队
    对于一些区间问题,虽然莫队好进行加操作,但并不好进行减操作,所以我们引出了回滚莫队。【模板】回滚莫队&不删除莫队发现我们并不总是知道什么时候取哪些值为最大值,尤其是删操作时,回滚莫队就是只用加操作实现的。我们对询问左端点所在的块排序,相同的话按照右排序,这样对于相同的左......
  • 帝国CMS内容页模板点击改变字体大小的js代码
    加入JS代码:<scripttype="text/javascript">functionFontZoom(fsize){varctext=document.getElementById("news");ctext.style.fontSize=fsize+"px";}</script>定制框架:<divid="news"&......
  • Vue-模板和选项式API
    模板确定模板有几种方式以容器的innerHTML做为模板以template选项做为模板以render函数做为模板优先级:render函数>template>容器<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metahttp-equiv="X-UA-Compat......
  • 【C++】C++11新特性详解:可变参数模板与emplace系列的应用
    C++语法相关知识点可以通过点击以下链接进行学习一起加油!命名空间缺省参数与函数重载C++相关特性类和对象-上篇类和对象-中篇类和对象-下篇日期类C/C++内存管理模板初阶String使用String模拟实现Vector使用及其模拟实现List使用及其模拟实现容器适配器Stack与QueuePriority......
  • OpenCV 模板匹配全解析:从单模板到多模板的实战指南
    简介:本文深入探讨OpenCV中的模板匹配技术。详细介绍构建输入图像与模板图像的步骤,包括读取、截取、滤波与存储等操作。剖析cv2.matchTemplate语法及其参数含义,阐述不同匹配方法下结果值的意义。同时讲解cv2.minMaxLoc语法,并通过代码示例展示单模板匹配查找最小值与最......
  • tarjan[模板]
    强连通分量(有向图)voidtarjan(intx){ dfn[x]=low[x]=++cnt; stac[++top]=x; vis[x]=1; for(inti=hd[x];i;i=nxt[i]) { inty=go[i]; if(!dfn[y])//树边 {tarjan(y);low[x]=min(low[x],low[y]);} elseif(vis[y])low[x]=min(low[x],dfn[y]);//在栈中(判横叉边) }......
  • 问EBS R12中怎样实现输出格式是多sheet页excel报表,不用excel模板实现,而是在sqlplus中
    https://www.itpub.net/thread-2094848-1-1.html 来源 手工创建一个EXCEL,放一些数据进去,然后另存为xml表格,用notepad打开看看,里面有代码。把代码用SQL拼接起来。<?xmlversion="1.0"?><?mso-applicationprogid="Excel.Sheet"?><Workbookxmlns="urn:schemas-m......
  • 【模板】叉积
    #include<bits/stdc++.h>usingnamespacestd;constdoubleeps=1e-8;structnode{ intx,y;}p[4];boolcmp1(nodea,nodeb){ if(a.x!=b.x)returna.x<b.x; returna.y<b.y;}intcmp(nodea,nodeb){ if(a.x==b.x&&a.y==b.y)......