然後稍微科普一下stl哦~
在queue裡面有乙個叫做priority_queue(優先佇列)
初始化狀態為大根堆,經過這樣的操作可以變為小根堆:
priority_queue ,greater >q;
需要注意的是在greater(該括號與後面那個括號不能夠連在一起,否則會報錯,因為"<
或者可以不這樣做,直接用原版
priority_queue q;
但是需要再加入元素的時候進行這樣操作
q.push(-x);
以及-q.front();
什麼的,詳細的嘛,請出門右拐直達度娘~
如題,初始小根堆為空,我們需要支援以下3種操作:
操作1: 1 x 表示將x插入到堆中
操作2: 2 輸出該小根堆內的最小數
操作3: 3 刪除該小根堆內的最小數
輸入格式:
第一行包含乙個整數n,表示操作的個數
接下來n行,每行包含1個或2個正整數,表示三種操作,格式如下:
操作1: 1 x
操作2: 2
操作3: 3
輸出格式:
包含若干行正整數,每行依次對應乙個操作2的結果。
輸入樣例#1:
5輸出樣例#1:1 21 523
2
2時空限制:1000ms,128m5
資料規模:
對於30%的資料:n<=15
對於70%的資料:n<=10000
對於100%的資料:n<=1000000(注意是6個0。。。不過不要害怕,經過編者實測,堆是可以ac的)
樣例說明:
故輸出為2、5
#include #includeusing
namespace
std;
const
int n = 1000010
;int
n,len;
int d[n<<1
];void add(int
x) }
void
print()
void
del()
}int
main()
else
if(c==2
) print();
else
del();
}return0;
}
洛谷P3378 模板 堆
洛谷p3378 輸入樣例 51 2152 32輸出樣例 25ac include using namespace std const int maxn 1e6 5 int heap maxn int ind 0 void insertheap 自下向上調整堆,因為除新加的結點外符合小根堆定義 ret...
洛谷 P3378 模板 堆
如題,初始小根堆為空,我們需要支援以下3種操作 操作1 1 x 表示將x插入到堆中 操作2 2 輸出該小根堆內的最小數 操作3 3 刪除該小根堆內的最小數 輸入格式 第一行包含乙個整數n,表示操作的個數 接下來n行,每行包含1個或2個正整數,表示三種操作,格式如下 操作1 1 x 操作2 2 操作3...
堆模板(pascal)洛谷P3378
如題,初始小根堆為空,我們需要支援以下3種操作 操作1 1 x 表示將x插入到堆中 操作2 2 輸出該小根堆內的最小數 操作3 3 刪除該小根堆內的最小數 輸入格式 第一行包含乙個整數n,表示操作的個數 接下來n行,每行包含1個或2個正整數,表示三種操作,格式如下 操作1 1 x 操作2 2 操作3...