1. 程式人生 > >洛谷 P3378 【模板】堆(小根堆)

洛谷 P3378 【模板】堆(小根堆)

三種 clas 代碼 輸入 print 支持 load prior cst

題目描述

如題,初始小根堆為空,我們需要支持以下3種操作:

操作1: 1 x 表示將x插入到堆中

操作2: 2 輸出該小根堆內的最小數

操作3: 3 刪除該小根堆內的最小數

輸入輸出格式

輸入格式:

第一行包含一個整數N,表示操作的個數

接下來N行,每行包含1個或2個正整數,表示三種操作,格式如下:

操作1: 1 x

操作2: 2

操作3: 3

輸出格式:

包含若幹行正整數,每行依次對應一個操作2的結果。

輸入輸出樣例

輸入樣例#1:
5
1 2
1 5
2
3
2
輸出樣例#1:
2
5

說明

時空限制:1000ms,128M

數據規模:

對於30%的數據:N<=15

對於70%的數據:N<=10000

對於100%的數據:N<=1000000(註意是6個0。。。不過不要害怕,經過編者實測,堆是可以AC的)

樣例說明:

技術分享圖片

故輸出為2、5

代碼:

#include<cstdio>
#include<queue>
using namespace std;
int n,k,l; 
priority_queue<int, vector<int>, greater<int> > d;
int main()
{
    scanf("%d",&n);
    for(int i = 1;i <= n; i++) {
        scanf(
"%d",&k); if(k == 1) { scanf("%d",&l); d.push(l); } if(k == 2) printf("%d\n",d.top()); if(k == 3) d.pop(); } return 0; }

洛谷 P3378 【模板】堆(小根堆)