前言
堆,一种树形结构,保持最优。
两个重要操作
上浮:加入了一个元素从下向上恢复堆得性质
下沉:该变了一个元素的值,恢复堆得性质
STL priority_queue()
跟其他的STL 很像
#include <bits/stdc++.h>
using namespace std;
int main()
{
priority_queue<int, vector<int>> pq1; // 默认大根堆
priority_queue<int, vector<int>, greater<int>> pq2; // 小根堆
pq1.push(1);
pq1.push(2);
pq1.push(3);
pq2.push(1);
pq2.push(2);
pq2.push(3);
cout << pq1.size() << endl
<< pq1.top() << endl
<< pq2.top() << endl;
pq2.pop(), pq1.pop();
cout << pq1.size() << endl
<< pq1.top() << endl
<< pq2.top() << endl;
return 0;
}
/*输出:
3
3
1
2
2
2*/
题目
P3378
P1090
P1168
P2085
P2827
P3045