HDU5249(set+queue模拟)
来源:互联网 发布:硕士论文修改 淘宝 编辑:程序博客网 时间:2024/05/23 01:57
这种动态查询中位数的题目比较老了。。。我在这篇博客的最后面也讲到了 点击我
原理是一样的,只不过把堆改成了set,因为要删除元素再加一个queue记录进入顺序。
我这里用比较简练的方式实现了。
#include<iostream> #include<set> #include<queue> #include<algorithm> #include<cstdio> using namespace std;int main(){ int Case=1; int n; while(cin>>n) { printf("Case #%d:\n",Case++); char s[20]; queue<int> q; set<int> left; set<int> right; int total=0; for(int i=1;i<=n;i++) { scanf("%s",s); if(s[0]=='i') { int num; scanf("%d",&num); q.push(num); if(total==0||num<*left.rbegin()) left.insert(num);else right.insert(num); total++; } else if(s[0]=='o') { int num=q.front(); q.pop(); total--; if(left.find(num)!=left.end()) left.erase(num);elseright.erase(num);}elseprintf("%d\n",*left.rbegin());//调整左右高度if(total!=0&&total%2==0&&left.size()==right.size()){left.insert(*right.begin());right.erase(*right.begin());}else if(total%2==1&&left.size()-right.size()>2){right.insert(*left.rbegin());left.erase(*left.rbegin());} }}}
阅读全文
0 0
- HDU5249(set+queue模拟)
- poj3481 Double Queue(set模拟or splay)
- HDU5249 KPI 树状数组+二分(或set容器类)
- <set> Double Queue (P3481)
- hdu 5249(set + queue)
- List Set Queue Map
- Double Queue set解法
- Set、 Queue、 Map接口
- list,set,queue
- hdu4393(模拟+queue)
- stack 模拟 queue
- queue 模拟 stack
- 模拟实现queue
- queue模拟小案例
- Double Queue(SET水题)
- 具有Set属性的Queue
- Map,List,Set,Queue小结
- Stack/Set/Map/Queue浅析
- eclipse远程调试Tomcat方法
- mysql使用建议
- Web基础之Cookie对象和Session对象项目实战和对比
- 数据挖掘与预测分析------跨行业数据挖掘标准流程:CRISP-DM
- Redis持久化
- HDU5249(set+queue模拟)
- java(swing)+mysql实现学生信息管理系统
- Android 中的Activity、Window、View之间的关系
- 008-阈下意识|识别商场上的圈套
- unicode与utf-8转换
- 将nodejs代码部署到阿里云服务器
- linux devel包 和 非devel包的区别
- ToolBar和ToolBar的setTitle()方法不生效解决方法
- 基于ZooKeeper的分布式锁和队列