前言:
推介配合lyf巨爷的一些来自STL的好东西
堆
题目:
如题,初始小根堆为空,我们需要支持以下3种操作:
操作1: 1 x 表示将x插入到堆中
操作2: 2 输出该小根堆内的最小数
操作3: 3 删除该小根堆内的最小数
输入:
输入格式:
第一行包含一个整数N,表示操作的个数
接下来N行,每行包含1个或2个正整数,表示三种操作,格式如下:
操作1: 1 x
操作2: 2
操作3: 3
输出:
包含若干行正整数,每行依次对应一个操作2的结果。
样例输入:
5
1 2
1 5
2
3
2
样例输出:
2
5
思路:
其实就只有三种操作,如何模拟三种操作是这题的难点,那要怎么模拟呢?暴力吗,二分吗?都不是,用堆+STL队列来做,用堆里面的小根堆(其实就是特殊的优先队列(越小的整数优先级越大))
priority_queue<int,vector<int>,greater<int> >q;
C o d e Code Code:
#include<cstdio>
#include<iostream>
#include<queue>
using namespace std;
priority_queue<int,vector<int>,greater<int> >gg;//定义小根堆
int n,x;
int main()
{
scanf("%d",