『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 |