保研/考研模拟赛第一场|清华大学(深圳)|2022年保研夏令营上机笔试
- Status
- Done
- Rule
- IOI
- Problem
- 3
- Start at
- 2023-4-22 14:00
- End at
- 2023-4-22 17:00
- Duration
- 3 hour(s)
- Host
- Partic.
- 20
You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.
有几个序列(依次编号为 0,1,....,n−1 ),初始时各个序列都为空。你的任务是维护这 n 个序列,需要进行的各种操作的表示与意义如下:
其中,一个序列的众数定义为该数列中出现次数最多的数,若出现次数最多的数有多种,取其中数值最小的数。
输入第一行为两个正整数 n,q ,表示序列的个数与操作次数。
接下来 q 行描述依次进行的操作,每行描述一个操作,每个操作的输入方式同题目描述。
对于所有输入数据,均满足 1≤n≤105,1≤q≤106 ,任何出现的序列编号 i 都满足 0≤i<n 。
序列中出现的任何数值 x 均满足 0≤x≤109 ,插入和删除操作中的数目 k 满足 1≤k≤109 。
对于每个询问操作, 输出询问时对应序列中出现次数最多的数中数值最小者,并换行。
输入
2 6
1 0 2 1
1 0 3 2
3 0
2 0 1
3 0
3 1
输出
2
1
-1
样例解释
第 1 次询问时, 0 号序列为 1 1 2 2 2
,唯一众数为 2 。
第 2 次淘问时, 0 号序列为 1 1 2 2
,两种数都出现了 2 次,取较小的 1 。
第 3 次询问时, 1 号序列为空,输出 −1 。
数据结构题:值域线段树 + 离线处理。
1.离线:观察到队列之间的操作是独立的。所以可以先把所有答案先全部读入进来。然后分队列处理
2.维护队列: