AT_agc072_a [AGC072A] Rhythm Game
题目描述
我们来考虑一个在数轴上随着音乐奔跑的游戏,如下所述。
> 数轴上有 $N$ 个按钮。第 $i$ 个按钮($1 \leq i \leq N$)会在游戏开始后 $T_i$ 秒出现在坐标 $X_i$。此外,每个按钮都会在出现后的 $D+0.5$ 秒后消失。
>
> 玩家在游戏开始时从坐标 $0$ 出发,如果能够按下所有 $N$ 个按钮,则游戏通关。按钮可以按任意顺序按下。然而,本游戏有一个特殊规则:每次按下一个按钮后,在按下下一个按钮之前,必须至少回到一次坐标 $0$。如果不遵守这一规则,则判为失格。
AtCoder 可以以每秒 $1$ 的速度在数轴上移动。请判断她是否存在通关的方法。按下按钮所需的时间可以忽略不计。
请你解答 $\mathrm{TESTCASES}$ 个测试用例。
输入格式
输入通过标准输入给出,格式如下,其中 $\mathrm{case}_k$ 表示第 $k$ 个测试用例。
> $\mathrm{TESTCASES}$
> $\mathrm{case}_1$
> $\mathrm{case}_2$
> $\vdots$
> $\mathrm{case}_{\mathrm{TESTCASES}}$
每个测试用例的格式如下:
> $N$ $D$ $T_1$ $X_1$ $T_2$ $X_2$ $\cdots$ $T_N$ $X_N$
输出格式
请输出 $\mathrm{TESTCASES}$ 行。对于第 $k$ 个测试用例,如果存在通关方法则输出 `Yes`,否则输出 `No`。
说明/提示
### 限制条件
- $1 \leq \mathrm{TESTCASES} \leq 100\,000$
- $1 \leq N \leq 5\,000$
- $0 \leq D \leq 10^{12}$
- $0 \leq T_1 \leq T_2 \leq \dots \leq T_N \leq 10^{12}$
- $1 \leq X_i \leq 10^{12}$
- 所有测试用例中 $N$ 的总和不超过 $100\,000$
- 所有测试用例中 $N^2$ 的总和不超过 $2.5 \times 10^7$
- 所有输入的数值均为整数
### 样例解释 1
对于第 1 个测试用例,可以按如下方式行动,从而通关,因此第 1 行输出 `Yes`。
| 从游戏开始的时间 | 行动・事件说明 |
|:---|:---|
| $0$ 秒 | 游戏开始。 |
| $5$ 秒 | 从坐标 $0$ 向右移动。 |
| $25$ 秒 | 到达坐标 $20$ 并停下。 |
| $30$ 秒 | 第 1 个按钮在坐标 $20$ 出现,立即按下该按钮,并开始向左移动。 |
| $50$ 秒 | 回到坐标 $0$,改变移动方向。此时第 2 个按钮刚好在坐标 $10$ 出现。 |
| $60$ 秒 | 到达坐标 $10$,按下第 2 个按钮。该按钮会在游戏开始 $60.5$ 秒后消失,因此来得及。 |
对于第 2 个测试用例,不存在通关方法,因此第 2 行输出 `No`。
对于第 3 个测试用例,存在通关方法,因此第 3 行输出 `Yes`。
对于第 4 个测试用例,不存在通关方法,因此第 4 行输出 `No`。
由 ChatGPT 4.1 翻译