- gf24118 的博客
GF205C1・优先队列
- 2025-7-25 16:58:33 @
优先队列!!!
相关函数功能
函数名 | 功能 |
---|---|
top() | 返回队列头部数据 |
push(elem) | 在队列尾部增加elem数据 |
pop() | 队列头部数据出队 |
empty() | 判断队列是否为空 |
size() | 返回队列中数据的个数 |
代码实现
#include <iostream>
#include <queue>
using namespace std;
int n,x;
priority_queue<int, vector<int>,greater<int>>q;//定义小根堆
int main(){
cin>>n;
for( int i= 0; i<n; ++i ){
cin>>x;
q.push(x);//插入元素
}
while(!q.empty()){
cout << q.top()<< endl;//输出队头值
q.pop();//弹出队头
}
}
代码复制
从小到大
#include <bits/stdc++.h>
using namespace std;
int n,x;
priority_queue<int,vector<int>,greater<int>> q;
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>x;
q.push(x);
}
while(!q.empty()){
cout<<q.top()<<endl;
q.pop();
}
return 0;
}
从大到小
方案一
#include <bits/stdc++.h>
using namespace std;
int n,x;
priority_queue<int,vector<int>,greater<int>> q;
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>x;
q.push(-x);
}
while(!q.empty()){
cout<<-q.top()<<endl;
q.pop();
}
return 0;
}
方案二
#include <bits/stdc++.h>
using namespace std;
int n,x;
priority_queue<int> q;
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>x;
q.push(x);
}
while(!q.empty()){
cout<<q.top()<<endl;
q.pop();
}
return 0;
}