堆【STL】
阿新 • • 發佈:2018-11-11
堆【STL—優先佇列】
洛谷P3378
P.S. stl用法大全
需要用到的標頭檔案
#include<queue>
定義一個堆
priority_queue<型別>name;
P.S. 定義的堆預設為大根堆,要定義小根堆可以
priority_queue<int,vector<型別>,greater<型別> >name;
堆的基本操作
q.push(x); //插入元素“x”
q.empty(); //返回堆是否為空(返回值為布林型)
q.top() //返回堆頂元素(不彈出)
q.pop() //彈出堆頂元素(不返回)
q.size() //返回堆的大小
模版的程式碼
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<vector>
using namespace std;
priority_queue<int,vector<int>,greater<int> >heap;
int n,k,z,num;
int main()
{
scanf ("%d",&n);
while(n --)
{
scanf("%d",&k);
if(k == 1)
{
scanf("%d",&num);
heap.push(num);
}
if(k == 2)
{
num = heap.top();
printf("%d\n",num);
}
if(k == 3)
{
heap.pop();
}
}
return 0;
}