洛谷 P3378 【模板】堆

简介: 洛谷 P3378 【模板】堆

850c110101764df49ab42081fe8bfe35.png

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

#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;
}


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


目录
相关文章
|
2月前
树状数组模板
树状数组模板
24 0
|
2月前
【每日一题Day361】LC2558从数量最多的堆取走礼物 | 大顶堆
【每日一题Day361】LC2558从数量最多的堆取走礼物 | 大顶堆
29 0
|
25天前
|
机器学习/深度学习 搜索推荐 算法
【洛谷 P1177】【模板】快速排序 题解(快速排序+指针)
**快速排序模板题解** - **任务**:对输入的N个整数进行排序。 - **算法**:使用快速排序,避免使用C++的STL`sort`。 - **输入**:一行包含N(N≤10^5),第二行是N个不超过10^9的整数。 - **输出**:排序后的整数序列,空格分隔。 - **样例**:输入`5 4 2 4 5 1`,输出`1 2 4 4 5`。 - **提示**:20%的数据,N≤10^3;所有数据,N≤10^5。 - **代码**:定义`partition`函数划分数组,主函数`main`读取数据,调用`quickSort`排序,然后打印结果。
8 0
|
2月前
|
存储 机器学习/深度学习 算法
数据结构与算法⑬(第四章_中_续二)堆解决Topk问题+堆的概念选择题
数据结构与算法⑬(第四章_中_续二)堆解决Topk问题+堆的概念选择题
36 3
|
2月前
|
存储 算法 C++
数据结构第十一弹---堆
数据结构第十一弹---堆
|
11月前
|
SQL 人工智能 开发框架
线段树模板+例题
线段树模板+例题
59 1
|
11月前
|
存储 C语言
IT公司的吉祥“树” 二叉树-(堆)C语言创建(一)
IT公司的吉祥“树” 二叉树-(堆)C语言创建
79 0
|
11月前
|
存储 算法 C语言
IT公司的吉祥“树” 二叉树-(堆)C语言创建(二)
IT公司的吉祥“树” 二叉树-(堆)C语言创建
61 0
|
11月前
洛谷—模板字典树 P8306
洛谷—模板字典树 P8306
58 0
[leetcode] 面试题 17.20. 连续中值 | 对顶堆维护动态中位数
[leetcode] 面试题 17.20. 连续中值 | 对顶堆维护动态中位数
78 0