博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pku 1442 Black Box 优先队列
阅读量:7115 次
发布时间:2019-06-28

本文共 917 字,大约阅读时间需要 3 分钟。

看了好几遍才懂了题意:就是给你m个数(要进入box的),然后是n个数u[i .. n],每个u[i]表示询问:当前u[i]个数进入box之后,求第i小的数。。

用两个优先队列分别建立大顶堆,小顶堆:小顶堆存放新加进来的数,大顶堆存放前边出现的数。。。

小顶堆存放新加进来的数并且维持着小顶堆里面的最小值,一定大于大顶堆里面的所有值。大顶堆记录的是当前所有出现的数的最小的几个(个数是上一次出现的序列的个数)

例如u[2] = 2-->u[3] = 6

q2 : 3,1

q1: -4

=>

q2: 1,-4 

q1: 3;

=>

q2: 1,-4

q1: 2,3

=>

q2:1,-4

q1: 2,3,8

=>

q2:1,-4

q1: 2,3,8,-1000

---》

q2:-1000,-4

q1: 2,3,8,1

输出1

这里q2的个数的是u[2] = 2 是所有进入box的个数,并且与q1一起维持着q2中放的是最小的。。

View Code
#include 
#include
#include
#include
#define maxn 30007 using namespace std; int ar[maxn]; struct cmp1 {
bool operator () (int &a,int &b) {
return a > b; } }; struct cmp2 {
bool operator () (int &a,int &b) {
return a < b; } }; //小顶堆 priority_queue
,cmp1>q1; //大顶堆 priority_queue
,cmp2>q2; int main() { int i,n,m,u; scanf("%d%d",&m,&n); for (i = 0; i

转载地址:http://gmghl.baihongyu.com/

你可能感兴趣的文章
Centos下MySQL主从同步配置
查看>>
Sort Detail Data Block Example - Oracle Forms
查看>>
如何在Node.js中合并两个复杂对象
查看>>
(笔记)VC6插件安装--Unable to register this add-in because its DllRegisterServer returns an error...
查看>>
【.net 深呼吸】细说CodeDom(7):索引器
查看>>
CSS3 速移动效果动画流畅无卡顿
查看>>
ASP.NET Core MVC/WebAPi 模型绑定探索
查看>>
Linux进程管理子系统分析【转】
查看>>
一步步构建iOS路由
查看>>
无法启动MYSQL服务”1067 进程意外终止”解决办法
查看>>
基於tiny4412的Linux內核移植 --- 实例学习中断背后的知识(1)
查看>>
Python魔法方法(magic method)细解几个常用魔法方法(上)
查看>>
如何绘制业务流程图
查看>>
monolog使用
查看>>
【AtCoder010】B - Boxes(差分)
查看>>
三种 Failover 之 Client-Side Connect time Failover、Client-Side TAF、Service-Side TAF
查看>>
ES 相似度算法设置(续)
查看>>
标准容器至少两个参数
查看>>
46:八进制到十进制
查看>>
JAVA4种线程池的使用
查看>>