首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >洛谷 P3378 【模板】堆

洛谷 P3378 【模板】堆

作者头像
枫叶丹
发布2024-06-04 11:24:51
发布2024-06-04 11:24:51
1910
举报
文章被收录于专栏:C++C++

好久没写博客啦,最近ACM集训学到了深搜(DFS)和广搜(BFS),学之前先学学队列的用法,于是就发现了这道题!!!

 这是一道简单的模板题,所以直接上AC代码!!!!

代码语言:javascript
复制
#define  _CRT_SECURE_NO_WARNINGS 1

#include <iostream>
#include <queue> //队列头文件
#include <vector> //动态数组头文件
#include <functional> //functional头文件
using namespace std;

// priority_queue 优先队列
// vector 动态数组
// greater 从大到小排序(less为从小到大排序)

priority_queue<int, vector<int>, greater<int> > pq; //创建优先队列

int main()
{
	int n = 0;
	cin >> n;
	while (n--)
	{
		int op = 0; //定义操作类型
		cin >> op;
		if (op == 1) // op == 1时将x加入队列
		{
			int x = 0;
			cin >> x;
			pq.push(x); // 在pq队列队尾处插入一个元素n O(logn)
			            // 并排序
		}
		else if (op == 2) // op == 2时,输出队列中最小数
		{
			cout << pq.top() << endl; //访问队头元素 O(1)
		}
		else if (op == 3) // op == 3时,删除队列中最小的一个数
		{
			pq.pop(); // 弹出队头元素 O(logn)
		}
	}

	return 0;
}

如果有不清楚的地方欢迎来讨论!!!!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档