Problem
【SDOI2008】校门外的区间
Description
受校门外的树这道经典问题的启发,君根据基本的离散数学的知识,抽象出种运算维护集合(初始为空)并最终输出。现在,请你完成这道校门外的树之难度增强版——校门外的区间。
种运算如下:
编号 | 表示格式 | 数学表示 |
---|---|---|
基本集合运算如下:
运算 | 结果 |
---|---|
Input
输入共行。
每行的格式为 ,用一个空格隔开,表示运算的种类,为一个区间(区间用表示)。
Output
Sample Input
1 | U [1,5] |
Sample Output
1 | (2,3) |
HINT
对于 的数据,,
标签:线段树
Solution
假设只有闭区间,对于每个数,标记其为还是。
四种运算对应如下(为区间修改,为区间取反):
再考虑加入开区间,开区间看作对应的闭区间。即将看作。
为了存的小数,我们将所有区间均乘,即变为。
又考虑到有的区间,因而对于所有区间两端点再加,即变为。
最后用线段树维护即可。
对于输出,扫一遍,找出每个数是还是,然后合并区间,双指针跑。
本题细节较多,写的时候得小心。
Code
1 |
|