优先队列
优先队列有两个分支,一个是小根堆,一个是大根堆。
这是一个优先队列的定义:
priority_queue<int> q;
默认是大根堆。
大根堆,也就是堆顶是最大的数,按着降序排到堆底。
小根堆,也就是堆顶是最小的数,按着升序排到堆底。
大根堆定义:
priority_queue<int> q;
由大根堆转小根堆有三种方法
一、在大根堆内推入负数(使用时也要加负号)
二、在定义上动手脚:
priority_queue<int,vector<int>,greater<int>> q;
三、重载运算符:
struct point{ int b; bool operater<(const point& B)const {return B.b<BIG_MOD;} };
优先队列操作:
定义:
priority_queue<int> q;
插入:
q.push()
删除:
q.pop();
堆顶:
q.top();