『SpOI - R1』Double Champions
题目描述
**本题包含多组数据。**
现在有若干个格子排在一行上。
再给出 $n$ 个区间,每个区间 $i$ 可以覆盖 $[l_i,r_i]$ 这个区间中的每一个格子(例如,区间 $[1,2]$ 可以覆盖格子 $1,2$)。
现在需要把这些区间分组,每个组带来的贡献为所有其旗下的区间的交的总长度。
你需要求出最少把这些区间分成多少组,才能使得每一组的贡献都 $\geq w$。如果不存在任何方案满足条件,输出 `No`。
输入输出格式
输入格式
第一行一个整数 $T$,表示数据组数。
对于每组数据,第一行两个整数 $n,w$。
接下来 $n$ 行,每一行两个整数 $l_i,r_i$,描述一个区间。
输出格式
对于每组数据,输出一行一个答案,表示最少要分的组数,或者字符串 `No`,表示无解。
输入输出样例
输入样例 #1
2
5 3
6 10
6 8
3 5
7 9
1 9
5 5
5 10
3 8
6 10
4 10
5 9
输出样例 #1
3
3
说明
#### 样例 #1 解释
按照输入顺序将输入的区间依次编号为 $①,②,③,④,⑤$。
可以将 $5$ 个区间分为以下 $3$ 组:$\{①,④\},\{②\},\{③⑤\}$。这样每一组的贡献即交集大小分别为 $3,3,3$,符合对每组贡献 $\geq 3$ 的要求。可以证明,$3$ 组是所有符合条件的区间划分方案中组数最少的。
### 数据范围
**请注意常数因子对程序效率的影响。**
**本题开启捆绑测试和子任务依赖。**
对于 $100\%$ 的数据,$1\leq T\leq 20$,$1\leq n\leq 2\times 10^5$,$0\leq w\leq 10^6$,$1\leq l_i\leq r_i\leq 10^6$。
| Subtask | $n\leq$ | $w,l_i,r_i\leq$ | 得分 | 子任务依赖 |
| :----------: | :----------: | :----------: | :----------: | :----------: |
| 1 | $8$ | $15$ | $10$ | 无 |
| 2 | $11$ | $20$ | $10$ | 1 |
| 3 | $1.5\times 10^3$ | $10^4$ | $25$ | 1,2 |
| 4 | $2\times 10^5$ | $10^6$ | $55$ | 1,2,3 |