CF1884C Medium Design
题目描述
数组 $a_1, a_2, \ldots, a_m$ 初始全部为 $0$。给定 $n$ 个两两不同的区间 $1 \le l_i \le r_i \le m$。你需要从这些区间中任选一个子集(可以为空集)。接下来,进行如下操作:
- 对于每个 $i = 1, 2, \ldots, n$,如果区间 $(l_i, r_i)$ 被选入子集,则对于每个 $l_i \le j \le r_i$,将 $a_j$ 加 $1$(即 $a_j$ 变为 $a_j + 1$)。如果区间 $(l_i, r_i)$ 没有被选中,则数组不变。
- 接着(在处理完所有 $i = 1, 2, \ldots, n$ 后),计算 $a$ 中的最大值 $\max(a)$ 和最小值 $\min(a)$。
- 最后,所选区间子集的代价定义为 $\max(a) - \min(a)$。
请你求出所有区间子集的最大代价。
输入格式
每组测试数据包含多组测试用例。第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。
每组测试用例的第一行包含两个整数 $n$ 和 $m$($1 \le n \le 10^5$,$1 \le m \le 10^9$),分别表示区间的数量和数组的长度。
接下来的 $n$ 行,每行包含两个整数 $l_i$ 和 $r_i$($1 \le l_i \le r_i \le m$),表示第 $i$ 个区间。保证所有区间两两不同。
保证所有测试用例中 $n$ 的总和不超过 $2 \times 10^5$。
输出格式
对于每个测试用例,输出所有区间子集的最大代价。
说明/提示
在第一个测试用例中,只有一个区间可选。如果不选它,数组为 $a = [0, 0, 0]$,此时代价为 $0$。如果选择了唯一的区间,数组为 $a = [0, 1, 0]$,代价为 $1 - 0 = 1$。
在第二个测试用例中,可以选择所有区间,此时数组为 $a = [0, 1, 2, 3, 2, 1, 0, 0]$,代价为 $3 - 0 = 3$。
由 ChatGPT 4.1 翻译