操作"/>
C++ 每日一题3:小根堆操作
每日一题3:小根堆操作
题目描述
请初始化一个小根堆为空,对于这个小根堆,需要支持以下三种操作:
操作1:输入1 x。表示将x插入到小根堆中。
操作2:输入2。表示输出当前小根堆内的最小数
操作3:输入3。表示删除当前小根堆内的最小数
输入格式
第1行输入正整数N,表示操作个数。
第2~N+1行,每行包含1个或2个正整数,表示三种操作
操作1:输入1 x。
操作2:输入2。
操作3:输入3。
输出格式
对于每个操作2(数字2),每下一行输出对应操作2的结果。
分析
考察小根堆的基本操作,可使用STL的优先队列(priority_queue)完成。
代码
#include<bits/stdc++.h>
using namespace std;
int n,op,x;
priority_queue<int>h;
int main(){cin>>n;for(int i=1;i<=n;i++){cin>>op;switch(op){case 1:cin>>x;h.push(-x); break;case 2:cout<<-h.top();break;case 3:h.pop(); }}return 0;
}
更多推荐
C++ 每日一题3:小根堆操作
发布评论