优先队列
程序员文章站
2022-03-31 08:09:02
...
从大到小:
从小到大:
优先队列里放 :
这里是首先让第一元素从小到大排序,当第一元素相等时,再按第二元素从大到小排序。
优先队列自定义重载:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <cmath>
#include <cstdlib>
#include <ctime>
using namespace std;
typedef long long LL;
const int maxn = 1e5 + 5;
struct X{
int a,b;
X () {}
X (int aa,int bb) {
a = aa,b = bb;
}
friend bool operator < (const X A, const X B){
if(A.a == B.a) return A.b > B.b; //这里是反过来的,小于就是大于,大于就是小于。
else return A.a > B.a;
}
};
X ans[maxn];
priority_queue <X> pq;
int main(){
ans[1].a = 1;
ans[1].b = 2;
ans[2].a = 2;
ans[2].b = 1;
ans[3].a = 1;
ans[3].b = 3;
pq.push(ans[1]);
pq.push(ans[3]);
pq.push(ans[2]);
while(!pq.empty()){
X k = pq.top();
pq.pop();
printf("%d %d\n",k.a,k.b);
}
}
输出:
1 2
1 3
2 1
上一篇: 堆栈,队列,优先队列