#P6645. [CCO2020] Interval Collection
[CCO2020] Interval Collection
题目背景
本题题面来自 LOJ。
题目描述
Altina 正进行区间收藏。一对满足 的正整数 为一个区间,我们称这样的区间的长度为 。
我们称区间 包含区间 ,当且仅当 并且 。特别地,每个区间都包含自身。
定义一个非空集合 的最大公共子区间为被 中每个区间都包含的区间中最长的那个,如果没有这样的区间则未定义。
定义一个非空集合 的最小公共超区间为包含 中每个区间的区间中最短的那个,注意这样的区间总是存在。
初始时,Altina 的收藏中没有任何区间。接下来会发生 个事件,对 Altina 的收藏产生改变。
- Altina 往她的收藏中添加一个区间 ,如果此时收藏中已有 ,应该被算作不同的两个区间。
- Altina 移除一个在收藏中已经存在的区间 ,如有多个只以移除恰好一个。
在每个事件发生后,Altina 选择一个她的收藏中的非空子集 ,并且满足如下条件:
- 在所有的选取方案中,她会选择最大公共子区间未定义的。如果不存在这样的方案,则她会选择最大公共子区间的长度最小的。
- 在所有的满足上述条件的集合 中,她会选择最小公共超区间的长度最小的。
请你在每一个事件发生后,输出 Altina 会选择的集合 的最小公共超区间的长度。
输入格式
第一行一个正整数 ,表示将会发生的事件的个数。
接下来 行,每行描述一个事件,格式如下:
- :添加一个区间 到 Altina 的收藏中。
- :从 Altina 的收藏中移除一个区间 ,保证这个区间在她的收藏中存在,且移除后她的收藏非空。
输出格式
输出 行,每行一个正整数表示每个事件发生后 Altina 会选择的集合 的最小公共超区间的长度。
5
A 1 5
A 2 7
A 4 6
A 6 8
R 4 6
4
6
5
4
7
提示
样例解释
加入 ,选择 最优,答案为 。
加入 ,选择 最优,答案为 。
加入 ,选择 最优,答案为 。
加入 ,选择 最优,答案为 。
删除 ,选择 最优,答案为 。
子任务
本题使用捆绑测试
- Subtask 1( 分):。
- Subtask 2( 分):。
- Subtask 3( 分):。
- Subtask 4( 分):对于任两个区间 和 ,保证 或者 。
- Subtask 5( 分):无特殊限制。
对于 的数据,保证 ,。
说明
本题译自 Canadian Computing Olympiad 2020 Day 2 T2 Interval Collection。
本题数据有所删减。