数据结构 ( 优先队列&&栈 )——HDU 5818 ( 2016 Multi-University Training Contest 7 1010 )
来源:互联网 发布:iso下载软件 编辑:程序博客网 时间:2024/05/17 08:36
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=5818分析:
对栈做三种操作:
push A x 把x元素压入A中
pop B 删除B中最上面的元素并输出该元素
merge B A合并A到B中,合并后B中的元素顺序和之前压入的顺序一样(就是从头开始把之前的压入操作都只对B执行一遍)题解:
用一个数据结构存储值和序号,使用三个优先队列,按序号排序,合并的时候全部合并到第三个优先队列里取,同时清空A和B,合并后查询的时候,若A,B中没有元素了,就取C里的最上面元素,能够保证题中要求顺序!
-参考代码:
#include<iostream>#include<cstdiO>#include<queue>using namespace std;struct stk{ int time,num; bool operator<(const stk&a) const{ return time<a.time; }}sta;priority_queue<stk> c;priority_queue<stk> a;priority_queue<stk> b;int main(){ int n; int ca = 1; while(~scanf("%d", &n) && n) { printf("Case #%d:\n", ca++); while(!a.empty()) a.pop(); while(!b.empty()) b.pop(); while(!c.empty()) c.pop(); int i=0; while(n--) { char op[10]; scanf("%s", op); if(op[1] == 'u') { scanf("%s",op); int x; scanf("%d",&x); if(op[0] == 'A') { sta.num=x; sta.time=i++; a.push(sta); } else { sta.num=x; sta.time=i++; b.push(sta); } } else if(op[1] == 'o') { scanf("%s",op); if(op[0] == 'A') { if(!a.empty()) { printf("%d\n",a.top().num); a.pop(); } else { printf("%d\n",c.top().num); c.pop(); } } else if(op[0]=='B'){ if(!b.empty()) { printf("%d\n",b.top().num); b.pop(); } else { printf("%d\n",c.top().num); c.pop(); } } } else { scanf("%s",op); while(!a.empty()) { c.push(a.top()); a.pop(); } while(!b.empty()) { c.push(b.top()); b.pop(); } scanf("%s",op); } } }}
0 0
- 数据结构 ( 优先队列&&栈 )——HDU 5818 ( 2016 Multi-University Training Contest 7 1010 )
- hdu 5818 2016 Multi-University Training Contest 7(模拟)
- HDU 5360 Hiking(优先队列)2015 Multi-University Training Contest 6
- hdu 5361 In Touch 题目特点+优先队列的dijikstra 2015 Multi-University Training Contest 6
- hdu 6071 Lazy Running(优先队列+dijkstra)(2017 Multi-University Training Contest
- 贪心——Windows10 ( HDU 5802 ) ( 2016 Multi-University Training Contest 6 1010 )
- 打表 ( 教训!!! )——HDU 5810 ( 2016 Multi-University Training Contest 7 1002 )
- 贪心——HDU 5813 ( 2016 Multi-University Training Contest 7 1005 )
- hdu 5810 Balls and Boxes(2016 Multi-University Training Contest 7——数学题)
- hdu 5813 Elegant Construction(2016 Multi-University Training Contest 7——暴力)
- hdu 5816 Hearthstone( 2016 Multi-University Training Contest 7——暴力+dfs搜索)
- hdu 5732 subway(2016 Multi-University Training Contest 1 1010)
- 2016 Multi-University Training Contest 7
- 2016 Multi-University Training Contest 7
- 2016 Multi-University Training Contest 7
- (HDU 5818)2016 Multi-University Training Contest 7 Joint Stacks (模拟、stack)
- hdu 5733 tetrahedron(2016 Multi-University Training Contest 1——几何公式题)
- hdu 5723 Abandoned country(2016 Multi-University Training Contest 1——最小生成树+深搜)
- 5-1 顺序存储的二叉树的最近的公共祖先问题 (25分)
- MySQL助理配置
- RecyclerView 头部添加布局 简单示例
- window7 64位系统 svn 搭建环境 注意事项
- iOS : Zbar几个经典问题的解决办法
- 数据结构 ( 优先队列&&栈 )——HDU 5818 ( 2016 Multi-University Training Contest 7 1010 )
- Android项目重构之路:实现篇
- web.xml文件的作用
- idea使用问题
- HDU 5811 Colosseo
- 系统结构中的中断
- Swift中数据库第三方框架SQLite.swift的基本使用
- WEB-INF目录与META-INF目录的作用
- java通过jdbc连接sqlite数据库进行CRUD操作