#3265. 漆匠

    ID: 3265 Type: Default 1000ms 256MiB Tried: 0 Accepted: 0 Difficulty: (None) Uploaded By: Tags>数据结构并查集路径压缩均摊分析CSP-S 模拟

漆匠

题目描述

工匠老周接到了一份刷漆的活:一条长廊里有 nn 个格子排成一行,从左到右编号 1∼n1 \sim n,最开始所有格子都是白色。

老周会依次进行 mm 次刷漆。第 ii 次刷漆给出一个区间 [li,ri][l_i, r_i],他会把这个区间里仍然是白色的格子都刷成颜色 ii;已经被刷过色的格子保持原来的颜色不变。颜色编号就是操作的编号。

所有操作结束后,请你求出长廊上所有格子颜色编号的总和。仍然是白色的格子按颜色 00 计算。

输入格式

第一行两个整数 n,mn, m。

接下来 mm 行,每行两个整数 li,ril_i, r_i(1≤li≤ri≤n1 \le l_i \le r_i \le n),描述一次刷漆。

输出格式

一行一个整数,表示所有格子颜色编号之和。

3 2
1 2
2 3
4
5 2
2 4
1 5
7
3 2
2 2
1 1
3

【样例 1 解释】

  • 第 11 次刷漆 [1,2][1,2]:格子 11、22 由白色变成颜色 11,长廊变为 1,1,白1,1,\text{白};
  • 第 22 次刷漆 [2,3][2,3]:格子 22 已经有色,跳过;只有格子 33 由白色变成颜色 22,长廊变为 1,1,21,1,2。

颜色总和 =1+1+2=4= 1 + 1 + 2 = 4,输出 4。

【样例 2 解释】

  • 第 11 次刷漆 [2,4][2,4]:长廊变为 白,1,1,1,白\text{白},1,1,1,\text{白};
  • 第 22 次刷漆 [1,5][1,5]:格子 2,3,42,3,4 已经有色,只有两端的格子 11、55 被刷成颜色 22。

颜色总和 =2+1+1+1+2=7= 2 + 1 + 1 + 1 + 2 = 7,输出 7。

【样例 3 解释】

第 11 次刷格子 22(颜色 11),第 22 次刷格子 11(颜色 22);格子 33 从头到尾都没有被覆盖过,按白色(颜色 00)计算,总和 =2+1+0=3= 2 + 1 + 0 = 3。

【数据范围】

对于所有测试数据,保证:

  • 1≤n≤2×1051 \le n \le 2\times 10^5;
  • 0≤m≤2×1050 \le m \le 2\times 10^5;
  • 1≤li≤ri≤n1 \le l_i \le r_i \le n。
测试点编号 n≤n \le m≤m \le 特殊性质
11 11 无
22
33 22
44 55
55 1010
66 100100
77 10001000 10001000
88 A
99 500500 B
1010 20002000 C
1111 50005000 无
1212 A
1313 2000020000 无
1414 5000050000
1515 2×1052\times 10^5 2×1052\times 10^5
1616 C
1717 D
1818 10510^5 B
1919 11 2×1052\times 10^5 无
2020 2×1052\times 10^5 00
  • 特殊性质 A:所有操作的区间完全相同(li,ril_i, r_i 都不随 ii 变化)。此时只有第 11 次操作能真正刷到颜色,后面 m−1m-1 次全是白跑 —— 把"格子已经有色就跳过"写错的程序会在这些点上给出大得多的答案。
  • 特殊性质 B:任意两次操作的区间互不相交(可以相邻)。此时每个格子最多只被一次操作覆盖,颜色的"第一次"与"最后一次"重合,专门用来区分"顺序覆盖"的错解。
  • 特殊性质 C:每次操作只刷一个格子(li=ril_i = r_i)。
  • 特殊性质 D:所有区间都从第 11 个格子开始(li=1l_i = 1)。