CF1291B Array Sharpening

题目描述

给定一个包含 $n$ 个非负整数的数组 $a_1, \ldots, a_n$。 我们称一个数组是“锐化的”,当且仅当存在一个整数 $1 \le k \le n$,使得 $a_1 < a_2 < \ldots < a_k$ 且 $a_k > a_{k+1} > \ldots > a_n$。特别地,任何严格递增或严格递减的数组也是锐化的。例如: - 数组 $[4]$、$[0, 1]$、$[12, 10, 8]$ 和 $[3, 11, 15, 9, 7, 4]$ 是锐化的; - 数组 $[2, 8, 2, 8, 6, 5]$、$[0, 1, 1, 0]$ 和 $[2, 5, 6, 9, 8, 8]$ 不是锐化的。 你可以进行如下操作任意次:选择数组中任意一个严格大于 $0$ 的元素,并将其减一。形式化地说,你可以选择任意 $i$($1 \le i \le n$),使得 $a_i > 0$,然后令 $a_i := a_i - 1$。 请判断是否可以通过若干次(可以为零次)上述操作,使得给定的数组变为锐化的。

输入格式

输入包含多组测试数据。第一行包含一个整数 $t$($1 \le t \le 15000$),表示测试数据的组数。接下来是每组测试数据的描述。 每组测试数据的第一行包含一个整数 $n$($1 \le n \le 3 \cdot 10^5$)。 第二行包含 $n$ 个非负整数 $a_1, \ldots, a_n$($0 \le a_i \le 10^9$)。 保证所有测试数据中 $n$ 的总和不超过 $3 \cdot 10^5$。

输出格式

对于每组测试数据,输出一行。如果可以通过上述操作使数组变为锐化的,输出 "Yes"(不含引号);否则输出 "No"(不含引号)。

说明/提示

在第一个测试的第一组和第二组中,给定的数组已经是锐化的。 在第一个测试的第三组中,可以将数组变为 $[3, 11, 15, 9, 7, 4]$(将第一个元素减少 $97$ 次,将最后一个元素减少 $4$ 次)。它是锐化的,因为 $3 < 11 < 15$ 且 $15 > 9 > 7 > 4$。 在第一个测试的第四组中,不可能将数组变为锐化的。 由 ChatGPT 4.1 翻译