CF2062B Clockwork

题目描述

你有一排 $n$ 个计时钟,其中第 $i$ 个时钟的初始时间为 $a_i$。每秒中,以下事件按顺序发生: - 每个时钟的时间减少 $1$。如果任意时钟的时间变为 $0$,你将立即失败。 - 你可以选择移动到相邻的时钟或停留在当前时钟。 - 你可以将当前所在时钟的时间重置为其初始值 $a_i$。 注意上述事件按顺序执行。如果某个时钟的时间在某一秒变为 $0$,即使你可以在该秒移动到这个时钟并重置其时间,你仍会失败。 你可以从任意时钟开始。请判断是否能够无限持续这个过程而不失败。

输入格式

第一行输入包含一个整数 $t$($1 \leq t \leq 10^4$)——测试用例的数量。 对于每个测试用例: - 第一行包含一个整数 $n$($2 \leq n \leq 5 \cdot 10^5$)——计时钟的数量。 - 第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \leq a_i \leq 10^9$)——各个时钟的初始时间。 保证所有测试用例的 $n$ 之和不超过 $5 \cdot 10^5$。

输出格式

对于每个测试用例,如果能够无限持续该过程,输出 "YES"(不带引号),否则输出 "NO"(不带引号)。 你可以输出任意大小写的答案(例如 "yEs", "yes", "Yes" 都会被识别为肯定回答)。

说明/提示

第一个测试用例中,你可以在两个时钟之间来回移动并反复重置它们的时间。 第三个测试用例中,假设你从时钟 $1$ 开始并采用以下策略: 初始时 $a = [4, 10, 5]$: 1. $a$ 变为 $[3, 9, 4]$。你移动到时钟 $2$ 并重置其时间,得到 $a = [3, 10, 4]$。 2. $a$ 变为 $[2, 9, 3]$。你移动到时钟 $3$ 并重置其时间,得到 $a = [2, 9, 5]$。 3. $a$ 变为 $[1, 8, 4]$。你移动到时钟 $2$ 并重置其时间,得到 $a = [1, 10, 4]$。 4. $a$ 变为 $[0, 9, 3]$。你试图移动到时钟 $1$,但由于 $a_1$ 变为 $0$ 而失败。 可以证明不存在其他策略能够无限持续该过程。 翻译由 DeepSeek R1 完成