算法竞赛模板 优先队列
①普通重载方法
priority_queue<int>qu1; //默认最大值优先 priority_queue<int,vector<int>,less<int> >qu2; //最大值优先 priority_queue<int,vector<int>,greater<int> >qu3; //最小值优先
②结构体重载方法
struct node { int x,y; friend bool operator <(node a,node b) { if(a.x!=b.x)return a.x>b.x; //b.x优先(最小值优先) else return a.y<b.y; //b.y优先(最大值优先) } }; priority_queue<node>qu;
(1) 在优先队列中,一般重载的是 < 符号;
(2) 由于在优先队列的内部实现中,判定规则为!cmp,所以我们在规定优先级时要反着来!
eg. a>b就是谁小谁优先,a<b就是谁大谁优先
(3) 取队首元素应该用qu.top()