C++优先队列
来源:互联网 发布:商标设计软件 编辑:程序博客网 时间:2024/06/16 05:20
发现优先队列这个东西需要学一下,今天中午闲着没事把优先队列学了一下,stl里很简单,重载一下声明啥的,优先队列原理是大根堆,哇,看了一会看不懂,算了。贴一下优先队列的基本用法,顺便找几道水题刷刷看。
用法:
#include <bits/stdc++.h>using namespace std;struct node{ int x; bool operator <(const node &a)const{//这个地方的符号必须是<因为stl中的优先队列只认识这个符号。 return a.x<x;//越小的优先级越高; }};int main(){ priority_queue<node> Q;//优先队列的声明 //实验,从大到小入队,出队从小到大 node s; for(int i=5;i>0;i--){ s.x=i; Q.push(s); } while(!Q.empty()){ cout<<Q.top().x<<endl; Q.pop(); }}
hdu1873 看病要排队 http://acm.hdu.edu.cn/showproblem.php?pid=1873
思路:完美用到优先队列,要注意一点就是要开一个队列数组,还有就是判断条件的重写。
代码:
#include <iostream>#include <queue>#include <string>using namespace std;struct node{ int pai;//排队的先后 int you;//优先级 friend bool operator<(node a,node b)//<代表b的优先级要高于a的优先级 { if(a.you<b.you) return true; if(a.you==b.you&&a.pai>b.pai) return true; return false; }};int main(){ priority_queue<node>Q[4]; node temp; int m; while(cin>>m){ for(int i=1;i<4;i++) while(!Q[i].empty()) Q[i].pop(); int j=1; for(int i=1;i<=m;i++){ string s; cin>>s; if(s[0]=='I'){ int a,b;cin>>a>>b; temp.pai=j,temp.you=b;j++; Q[a].push(temp); } else{ int a;cin>>a; if(Q[a].empty()) cout<<"EMPTY"<<endl; else{ cout<<Q[a].top().pai<<endl; Q[a].pop(); } } } }}
0 0
- 【C++】优先队列priority_queue
- C++priority_queue优先队列
- 优先队列 C实现
- c#---优先队列
- 优先队列C语言实现
- C++STL之优先队列
- CF322 C 优先队列+贪心
- C++STL优先队列小结
- 优先队列--C语言实现
- 优先队列(C++/Java)
- 哈夫曼树 --- 优先队列(C++STL)
- C++STL优先队列使用
- 【数据结构】【C++STL】FIFO队列&优先队列
- 优先队列的精简实现(c++)
- CF 45C Dancing Lessons(优先队列)
- C语言队列实现广度优先遍历
- C. Sereja and Swaps/优先队列
- <C/C++算法>最大优先队列
- java学习笔记之——文件输出流
- java SSM 框架 微信自定义菜单 快递接口 SpringMVC mybatis redis shiro
- 黑客技术之初学者编程入门
- Javascript中的async await
- 关闭防火墙
- C++优先队列
- 微信生成带参数的二维码
- <context-param>与<init-param>的区别与作用
- CAS实战の自定义注销
- Android自动化测试手段之Monkey(adb shell monkey)
- 历届试题 带分数 全排列
- Android笔记之获取apk文件包名、版本信息
- nyoj 非洲小孩
- 解决ssh登录后闲置时间过长而断开连接