结构体如下
struct node{
int a,b;
string s;
};
定义其对应优先队列,这里有点类似与sort。其中,node为结构体,vector<node>大概试表示范围(我不确定),cmp为比较的函数
priority_queue<node,vector<node>,cmp> pq;
值得注意的是cmp不能直接使用bool定义,而是要写成下列形式,一定要用operator。
如果你想要大的排前,那你需要写"<=",这里和sort有所区别。
struct cmp{
bool operator()(node a,node b){
return a.b<=b.b;
}
};
完整代码如下:
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<map>
#include<queue>
#include<stdlib.h>
using namespace std;
using ll=long long;
struct node{
int a,b;
};
struct cmp{
bool operator()(node a,node b){
return a.b<=b.b;
}
};
priority_queue<node,vector<node>,cmp> pq;
int main(){
int n;
cin>>n;
node t;
for(int i=0;i<n;i++){
cin>>t.a>>t.b;
pq.push(t);
}
while(!pq.empty()){
cout<<pq.top().a<<" "<<pq.top().b<<endl;
pq.pop();
}
return 0;
}
效果如下:
菜鸡一个,如有讲错,欢迎指出