luogu#P8861. 线段

    ID: 12846 远端评测题 3000ms 1024MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>线段树洛谷原创O2优化分治洛谷月赛

线段

题目描述

有一个初始为空的线段集,你需要处理 qq 组询问,每组询问的格式为如下三种之一:

  1. 加入一条新线段 [li,ri][l_i,r_i]
  2. 将线段集里所有与 [li,ri][l_i,r_i] 相交的线段修改为其与 [li,ri][l_i,r_i] 的交。
  3. 求出线段集里所有与 [li,ri][l_i,r_i] 相交的线段与 [li,ri][l_i,r_i] 的交的长度和。

两条线段 [a,b],[c,d][a,b],[c,d] 相交,当且仅当 max{a,c}min{b,d}\max\{a,c\} \leq \min\{b,d\},它们的交为 [max{a,c},min{b,d}][\max\{a,c\},\min\{b,d\}]

一条线段 [a,b][a,b] 的长度为 bab-a

在部分测试点中,你需要在线地进行这些操作。

注意:在本题中,线段可能退化为单点。

输入格式

第一行两个正整数 qqtypetype,分别表示操作次数和强制在线参数。

接下来 qq 行,每行三个正整数 opt,li,riopt,l_i',r_i',其中 optopt 表示操作类型。

我们记 lastlast 表示上一次 33 询问的答案(lastlast 初始为 00),则真实的 $l_i = ( l_i' + type \times last ) \bmod ( 2 \times 10^5 + 1 ), r_i = ( r_i' + type \times last ) \bmod ( 2 \times 10^5 + 1 )$。

数据保证 1liri2×1051 \leq l_i \leq r_i \leq 2 \times 10^5

输出格式

对于每个 33 询问,输出一行表示答案。

9 0
1 1 5
1 6 8
1 2 3
3 3 8
2 4 6
1 5 9
2 2 7
3 2 7
3 3 6

4
4
2

提示

【样例解释】

每次操作后的线段集:

  • 第一次后:{[1,5]}\{ [1,5] \}
  • 第二次后:{[1,5],[6,8]}\{ [1,5],[6,8] \}
  • 第三次后:{[1,5],[6,8],[2,3]}\{ [1,5],[6,8],[2,3] \}
  • 第五次后:{[4,5],[6,6],[2,3]}\{ [4,5],[6,6],[2,3] \}
  • 第六次后:{[4,5],[6,6],[2,3],[5,9]}\{ [4,5],[6,6],[2,3],[5,9] \}
  • 第七次后:{[4,5],[6,6],[2,3],[5,7]}\{ [4,5],[6,6],[2,3],[5,7] \}

【数据范围】

k1,k2,k3k_1,k_2,k_3 分别为 opt=1,2,3opt=1,2,3 的询问个数。

测试点编号 k1k_1 \leq k2k_2 \leq k3k_3 \leq type=type= 特殊性质
121 \sim 2 100100 =0=0
353 \sim 5 10510^5 55 3×1053 \times 10^5
686 \sim 8 10510^5 11 所有 22 操作在所有 11 操作之后
9129 \sim 12 3×1053 \times 10^5
131713 \sim 17 li105ril_i \leq 10^5 \leq r_i
182018 \sim 20 5×1045 \times 10^4
212521 \sim 25 10510^5 =1=1

对于所有数据,1q5×1051 \leq q \leq 5 \times 10^5, k31k_3 \geq 1, 0li,ri2×1050 \leq l_i',r_i' \leq 2 \times 10^5, 1liri2×1051 \leq l_i \leq r_i \leq 2 \times 10^50type10 \leq type \leq11opt31 \leq opt \leq 3