luogu#P16327. 线段

    ID: 16155 远端评测题 2000ms 512MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>线段树二分树状数组洛谷原创O2优化前缀和差分洛谷月赛

线段

题目描述

你有一个可重集 SS,每个元素是一个线段。初始你有 nn 个元素,第 ii 个元素为线段 [li,ri][l_i,r_i]

接下来有 qq 次操作,每次操作给出一个线段 [L,R][L,R]同时检查当前的每个元素 [li,ri][l_i,r_i]。若其与线段 [L,R][L,R] 有交,则将相交的部分从原线段中分割出来,然后将剩下的几部分作为新的元素加入,并把原来的元素删掉。新的元素不会参与本次操作,线段 [L,R][L,R] 不会被加入 SS

形式化地,令 l=max(li,L)l'=\max(l_i,L) r=min(ri,R)r'=\min(r_i,R),若 lrl'\le r'

  • 将线段 [l,r][l', r'] 加入 SS

  • li<ll_i<l',将线段 [li,l1][l_i,l'-1] 加入 SS

  • r<rir'<r_i,将线段 [r+1,ri][r'+1,r_i] 加入 SS

  • SS 中删除线段 [li,ri][l_i,r_i]

每次操作后,请你输出当前的元素个数。

注意,若每次检查后产生的元素若与原来的某个元素相同,则保留多个。若删除元素时存在多个和当前元素相同的元素,则只删除其中一个。

输入格式

第一行两个正整数 n,qn,q,表示初始元素个数和操作次数。

接下来 nn 行,每行两个正整数 li,ril_i,r_i,表示每个初始元素 [li,ri][l_i,r_i]

接下来 qq 行,每行两个正整数 Li,RiL_i,R_i,表示每次操作给出的区间 [Li,Ri][L_i,R_i]

输出格式

输出 qq 行,每行一个整数表示每次操作后的元素个数。

5 3
1 1
10 10
3 3
3 3
1 10
2 8
3 10
1 3
7
8
9

10 10
2 9
10 10
2 8
2 5
2 9
2 2
1 10
10 10
2 9
2 2
2 10
1 6
1 10
3 4
2 9
1 9
3 7
2 10
2 10
2 10
11
16
16
28
29
29
34
34
34
34

提示

【样例解释 1】

初始有 55 个线段 [1,1],[10,10],[3,3],[3,3],[1,10][1,1],[10,10],[3,3],[3,3],[1,10]

第一个操作给定线段 [2,8][2,8],与其有交的线段有 [3,3],[3,3],[1,10][3,3],[3,3],[1,10],操作后 [3,3][3,3] 保持不变,[1,10][1,10] 变为 [1,1],[2,8],[9,10][1,1],[2,8],[9,10],共有 77 个元素。

第二个操作给定线段 [3,10][3,10],与其有交有 [10,10],[3,3],[3,3],[2,8],[9,10][10,10],[3,3],[3,3],[2,8],[9,10],其中只有 [2,8][2,8] 会变为 [2,2],[3,8][2,2],[3,8],共有 88 个元素。

第三个操作给定线段 [1,3][1,3],与其相交的会变化的元素只有 [3,8][3,8] 会变为 [3,3],[4,8][3,3],[4,8],共有 99 个元素。

【数据范围】

本题使用子任务捆绑

对于所有测试数据,1n,q5×1051 \le n,q \le 5\times10^51liri1091\le l_i \le r_i \le 10^91LiRi1091 \le L_i \le R_i \le 10^9

子任务编号 n,qn,q\le 特殊性质 分值
11 200200 2020
22 20002000
33 5×1055\times 10^5
44 4040
  • 特殊性质:保证 Li=1L_i = 1