| 比赛场次 | 53 |
|---|---|
| 比赛名称 | 201001-line |
| 比赛状态 | 已结束比赛成绩 |
| 开始时间 | 2010-01-18 19:00:00 |
| 结束时间 | 2010-01-18 22:00:00 |
| 开放分组 | 全部用户 |
| 组织者 | cqw |
| 注释介绍 |
| 题目名称 | 可合并堆 |
|---|---|
| 输入输出 | uheap.in/out |
| 时间限制 | 1000 ms (1 s) |
| 内存限制 | 128 MiB |
| 测试点数 | 5 简单对比 |
| 用户 | 结果 | 时间 | 内存 | 得分 |
|---|---|---|---|---|
|
|
AWWWA | 0.000 s | 0.00 MiB | 40 |
|
|
AWWWW | 0.000 s | 0.00 MiB | 20 |
|
|
C | 0.000 s | 0.00 MiB | 0 |
用链表实现的可合并堆一个可合并堆支持这样几种操作:MAKEHEAP,INSERT,MINIMUM,EXTRACTMIN和UNION。说明在下列每一情况中,如何用链表实现可合并堆。尽量使每种操作高效。为使输入输出方便,作如下指令编号约定:
1号操作:MAKEHEAP,创建一个空的可合并堆。例如,1 4 表示执行1号建堆指令,新建一个堆,该堆编号为4,即4号堆。
2号操作:INSERT,堆插入操作。例如,2 4 56 表示执行2号插入指令,向4号堆插入整数56(如果堆不存在则输出insert error!)。
3号操作:EXTRACTMIN,删除堆最小值,并输出。例如,3 4 表示执行3号删除指令,删除4号堆最小值,并输出(如果4号堆不存在或4号堆为空则输出extract error!)。
4号操作:UNION,合并堆。例如,4 2 4 表示执行4号合并指令将2号堆,4号堆合并,该合并将两个堆合并至2号堆,合并4号堆为空堆(若2号堆或4号堆不存在则输出union error!)。
第一行一个整数$n$,表示指令的条数。
接下来$n$行,每行一条指令,每行若干个用一个空格隔开的整数,第1个整数表示指令编号,其余参数含义如题描述。
输出有$n$行,每行表示一个指令的执行结果,如果该指令没有任何输出则显示0,如果有则按指令要求输出信息。
9 1 1 1 2 1 3 2 1 6 2 1 5 2 1 4 2 3 3 4 1 3 3 1
0 0 0 0 0 0 0 0 3