【洛谷】P3378 【模板】堆

原题链接:https://www.luogu.com.cn/problem/P3378

目录

1. 题目描述

2. 思路分析

3. 代码实现


1. 题目描述

【洛谷】P3378 【模板】堆_第1张图片

2. 思路分析

一道模板题,主要是熟悉STL中优先队列(priority_queue)的使用。

堆的STL实现:

priority_queue q;    //这是一个大根堆q(默认为大根堆)

priority_queue,greater >q;    //这是一个小根堆q

优先队列的操作:

q.top();    //取得堆顶元素,并不会弹出
q.pop();    //弹出堆顶元素
q.push();    //往堆里面插入一个元素
q.empty();    //查询堆是否为空,为空则返回1,否则返回0
q.size();    //查询堆内元素数量

3. 代码实现

#include
using namespace std;
using ll = long long;

void solve() {
	int n; cin >> n;
	priority_queue , greater>pq;
	while (n--) {
		int op; cin >> op;
		if (op == 1) {
			int x; cin >> x;
			pq.push(x);
		}
		else if (op == 2) {
			cout << pq.top() << '\n';
		}
		else {
			pq.pop();
		}
	}
}

int main() {
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	solve();
	return 0;
}

【洛谷】P3378 【模板】堆_第2张图片

你可能感兴趣的:(编程刷题,#,洛谷,堆,优先队列,完全二叉树,算法)