POJ 1442 Black Box(第k次询问第k小,两个堆)
2017-01-13 21:37
169 查看
思路:
用一个大顶堆和一个小顶堆,将队列分为两部分,大顶堆的堆顶小于小顶堆的堆顶,这样就连续的把数列分开了,每次询问只要把小顶堆里的数扔到大顶堆里去,然后调整两个堆使得大顶堆的堆顶小于小顶堆的堆顶,然后此时大顶堆的堆顶就是第k小。
#include <iostream> #include <cstdio> #include <string.h> #include <queue> #include <cmath> typedef long long int lli; using namespace std; int a[30100]; int q[30100]; int main(){ int m,n; cin>>m>>n; priority_queue<int , vector<int>,greater<int> > q1; priority_queue<int> q2; for(int i = 1;i <= m;i++){ scanf("%d",a+i); } for(int i = 1;i <= n;i++){ scanf("%d",q+i); } int i = 0; for(int j = 1;j <= n;j++){ while(i < q[j]){ i++; q1.push(a[i]); } int temp = q1.top(); q1.pop(); q2.push(temp); while(!q1.empty() && q2.top() > q1.top()){ q1.push(q2.top()); q2.pop(); q2.push(q1.top()); q1.pop(); } printf("%d\n",q2.top()); } }
相关文章推荐
- SICP 2.30 && 2.31square_list (树的平方映射)
- 一键搭建PXE自动装机
- Android蓝牙搜索设备,向其发送数据并接收
- win7下安装ubutun双系统
- [JZOJ4937] 与运算
- vim-6 执行shell命令、文件另存为、合并文件和打开多个文件
- 微信小程序聊天客服工具
- 算法训练 6-1 递归求二项式系数值
- Linux的进程优先级 NI 和 PR
- Linux的进程优先级 NI 和 PR
- 创龙TMS320C6748开发板———SPI接口配置
- 奖学金pascal程序
- 创龙TMS320C6748开发板———Timer配置 + Timer触发中断 + GPIO控制LED闪烁
- 一步一步掌握java的线程机制(一)----创建线程
- strstr函数的使用
- 【菜鸟小屁的成长日记】之ElasticSearchElasticsearch<入门>篇
- 【NOIP2014模拟9.9】逆光 (Standard IO)
- Linux 源码编译安装curl
- python2 爬虫爬教务管理,还有验证码识别
- 【寒假任务】洛谷1540 机器翻译