CF2062B.Clockwork

传统题 时间 2000 ms 内存 256 MiB 4 尝试 1 已通过 1 标签

Clockwork

题目描述

你有一排 nn 个计时钟,其中第 ii 个时钟的初始时间为 aia_i。每秒中,以下事件按顺序发生:

  • 每个时钟的时间减少 11。如果任意时钟的时间变为 00,你将立即失败。
  • 你可以选择移动到相邻的时钟或停留在当前时钟。
  • 你可以将当前所在时钟的时间重置为其初始值 aia_i

注意上述事件按顺序执行。如果某个时钟的时间在某一秒变为 00,即使你可以在该秒移动到这个时钟并重置其时间,你仍会失败。

你可以从任意时钟开始。请判断是否能够无限持续这个过程而不失败。

输入格式

第一行输入包含一个整数 tt1t1041 \leq t \leq 10^4)——测试用例的数量。

对于每个测试用例:

  • 第一行包含一个整数 nn2n51052 \leq n \leq 5 \cdot 10^5)——计时钟的数量。
  • 第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n1ai1091 \leq a_i \leq 10^9)——各个时钟的初始时间。

保证所有测试用例的 nn 之和不超过 51055 \cdot 10^5

输出格式

对于每个测试用例,如果能够无限持续该过程,输出 "YES"(不带引号),否则输出 "NO"(不带引号)。

你可以输出任意大小写的答案(例如 "yEs", "yes", "Yes" 都会被识别为肯定回答)。

说明/提示

第一个测试用例中,你可以在两个时钟之间来回移动并反复重置它们的时间。

第三个测试用例中,假设你从时钟 11 开始并采用以下策略:

初始时 a=[4,10,5]a = [4, 10, 5]

  1. aa 变为 [3,9,4][3, 9, 4]。你移动到时钟 22 并重置其时间,得到 a=[3,10,4]a = [3, 10, 4]
  2. aa 变为 [2,9,3][2, 9, 3]。你移动到时钟 33 并重置其时间,得到 a=[2,9,5]a = [2, 9, 5]
  3. aa 变为 [1,8,4][1, 8, 4]。你移动到时钟 22 并重置其时间,得到 a=[1,10,4]a = [1, 10, 4]
  4. aa 变为 [0,9,3][0, 9, 3]。你试图移动到时钟 11,但由于 a1a_1 变为 00 而失败。

可以证明不存在其他策略能够无限持续该过程。

翻译由 DeepSeek R1 完成

样例

5
2
4 10
2
2 2
3
4 10 5
3
5 3 5
5
12 13 25 17 30
YES
NO
NO
YES
YES

在线编程 IDE

建议全屏模式获得最佳体验