题目名称 601. [POJ 1442] 黑盒子
输入输出 blackbox.in/out
难度等级 ★★★
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 16
题目来源 Gravatarmouse 于2011-10-17加入
开放分组 全部用户
提交状态
分类标签
单调队列 平衡树 线段树 离散化
分享题解
通过:211, 提交:407, 通过率:51.84%
Gravatarsyzhaoss 100 0.000 s 0.00 MiB C++
Gravatar. 100 0.005 s 0.64 MiB C++
Gravatar┭┮﹏┭┮ 100 0.011 s 1.69 MiB C++
GravatarAntiLeaf 100 0.024 s 0.71 MiB C++
Gravatarztx 100 0.028 s 1.83 MiB C++
GravatarDissolute丶Tokgo 100 0.029 s 1.84 MiB C++
Gravatarwakawaka 100 0.030 s 2.60 MiB C++
Gravatar王司徒 100 0.031 s 30.85 MiB C++
Gravatarfw 100 0.032 s 1.30 MiB C++
Gravatar呵呵 100 0.033 s 0.60 MiB C++
本题关联比赛
20111021
数据结构练习
关于 黑盒子 的近10条评论(全部评论)
洛谷上一直90分。。。。。
谁知道增强的那四组数据卡了点啥?
GravatarJekyll
2017-11-09 21:40 15楼
上大学了居然还要再学一遍treap
这里的数据似乎有些小,我两个哨兵开了±0x7fffffff(8个f)也过了
我的题解:http://wmdcstdio.com/2017/10/27/poj-1442neerc-1996black-box/
Gravatarcstdio
2017-10-27 21:58 14楼
离散化,线段树
GravatarFisher.
2017-07-25 16:06 13楼
stl常数大如狗,我没看出来是线段树....
GravatarFisher.
2017-07-25 14:23 12楼
GravatarAntiLeaf
2017-05-25 15:59 11楼
GravatarAntiLeaf
2017-05-25 15:44 10楼
set A4T2
线段树 A6
平衡树 A6
GravatarHzoi_Go灬Fire
2016-12-11 07:19 9楼
150题斩。
Gravatar槿柒
2016-07-09 17:02 8楼
终于写对splay了。
Gravatar/k
2016-04-02 17:48 7楼
离散化+线段树。离散化时可以把相同的数离散化为不同的值,不必特殊处理,便于之后由离散化后的值再查找一开始的值
Gravatarliu_runda
2016-03-05 08:19 6楼

601. [POJ 1442] 黑盒子

★★★   输入文件:blackbox.in   输出文件:blackbox.out   简单对比
时间限制:1 s   内存限制:128 MiB

【问题描述】

我们使用黑盒子的一个简单模型。它能存放一个整数序列和一个特别的变量$i$。在初始时刻,黑盒子为空且$i$等于$0$。这个黑盒子能执行一系列的命令。有两类命令: 

ADD(x):把元素$x$放入黑匣子;

GET:把$i$加$1$的同时,输出黑匣子内所有整数中第$i$小的数。

下面的表是一个11个命令的例子:

编号 命令 i 黑匣子内容 输出
1 ADD(3) 0 3  
2 GET 1 3 3
3 ADD(1) 1 1,3  
4 GET 2 1,3 3
5 ADD(-4) 2 -4,1,3  
6 ADD(2) 2 -4,1,2,3  
7 ADD(8) 2 -4,1,2,3,8  
8 ADD(-1000) 2 -1000,-4,1,2,3,8  
9 GET 3 -1000,-4,1,2,3,8 1
10 GET 4 -1000,-4,1,2,3,8 2
11 ADD(2) 4 -1000,-4,1,2,2,3,8  
 

定义ADD命令的个数为$m$个,GET命令的个数为$n$个。我们用下面的两个整数序列描述命令序列:

(1)$a_1,a_2,\cdots,a_m$:加入黑匣子的元素序列。例如在上例中$a=\{3,1,-4,2,8,-1000,2\}$。

(2)$u_1,u_2,\cdots,u_n$:$u_i$表示第$i$个GET命令在第$u_i$个ADD命令之后,例如在上例中,$u=\{1,2,6,6\}$。

现在请你根据给出的序列$a$和$u$求出操作过程中输出的所有数值。

【输入格式】

输入包括三行。

第一行包含两个整数$m,n$,表示$a$序列和 $u$ 序列的长度。

第二行包含$m$个整数,表示$a$序列的每一个元素。

第三行包含$n$个整数,表示$u$序列的每一个元素。

同行每个数之间用空格隔开。

【输出格式】

输出操作过程中所有GET操作输出的数值。

每个数值占一行。

【输入样例】

7 4
3 1 -4 2 8 -1000 2
1 2 6 6

【输出样例】

3
3
1
2

【数据范围】

$|a_i|\leq 2\times 10^9,1\leq n\leq m\leq 30000$,对于所有的$p(1\leq p\leq n),p\leq u(p)\leq m$成立。