CF2220B OIE Excursion
题目描述
Hector 正与西班牙信息学奥林匹克代表队一起在拉科鲁尼亚远足,但他非常想溜出去见他的朋友们 Gustavo、Esomer 和 Dani。为此,他需要穿过一条由 $n$ 个志愿者看守的道路,志愿者们站成一排,编号为 $1$ 到 $n$;第 $i$ 位志愿者负责看守位置 $i$。
每个志愿者都有一个内部计时器。最初(第 0 秒),第 $i$ 位志愿者的计时器值为 $a_i$。每秒,所有计时器增加 1。一旦计时器达到 $m$,它会绕回到 0。具体来说,在第 $x$ 秒,第 $i$ 位志愿者的计时器显示值为 $(a_i + x) \pmod m$。
第 $i$ 位志愿者只有在他们的计时器恰好为 0 时,才会看守位置 $i$。其他时间他们都会分心,不会注意到 Hector。
Hector 从位置 0 开始,在所有志愿者的左侧。为了逃脱,他需要到达位置 $n+1$。每秒结束时,Hector 可以选择停留在当前所在位置,向左移动一个位置,或者向右移动一个位置。注意,Hector 不能移动到位置 0 的左侧。
当且仅当在某一秒开始时,Hector 位于位置 $i$($1 \le i \le n$),且第 $i$ 位志愿者的计时器为 0 时,Hector 才会被抓住。
判断是否存在一种策略,使 Hector 能够在不被抓住的情况下穿过所有志愿者并逃脱。
输入格式
每个测试点包含多个测试用例。第一行包含测试用例的数量 $t$($1 \le t \le 10^4$)。接下来是每个测试用例的描述。
每个测试用例由两行组成:
第一行包含两个整数 $n$ 和 $m$($2 \le n \le 2 \cdot 10^5$,$2 \le m \le 10^9$)——志愿者的数量以及计时器的周期长度。
第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($0 \le a_i < m$),其中 $a_i$ 表示第 $i$ 位志愿者在 $t=0$ 时的计时器初始值。
保证所有测试用例的 $n$ 之和不超过 $2 \cdot 10^5$。
输出格式
对于每个测试用例,输出一行,包含 "YES" 或 "NO",表示 Hector 能否逃脱。你可以以任意大小写输出答案(大小写均可)。例如,"yEs"、"yes"、"Yes" 和 "YES" 都会被识别为肯定回答。
说明/提示
- 样例 1:Hector 可以每秒向右移动,无需等待或向左移动就能逃脱,因为不存在 $i$ 使得 $(a_i + i) \pmod m = 0$。
- 样例 2:一种可能的策略是先在起始位置等待 1 秒,然后每秒向右移动,无需进一步等待或向左移动。
翻译有deepseek v3.2完成