CF1836A Destroyer
题目描述
John 是独立操作系统联盟太空海军一艘驱逐舰的首席程序员。他的任务之一是检查机器人在战斗中是否受到了电子大脑的损伤。
一种标准的测试方法是命令机器人排成一行或多行,每一行的机器人应依次站立。之后,每个机器人会报告在它所在的那一行中,站在它前面的机器人数量。

这是一个机器人的排列示例(队伍前方在左侧)。机器人报告了上方的数字。第 $i$ 个机器人报告的数字为 $l_i$。不幸的是,John 并不知道每个机器人站在哪一行,也无法核查这些报告的数字。请你判断是否存在一种排列方式,使得所有机器人的报告都成立。
输入格式
第一行包含一个整数 $t$($1 \leq t \leq 100$),表示测试用例的数量。
每个测试用例的第一行包含一个整数 $n$($1 \le n \le 100$),表示机器人的数量。
每个测试用例的第二行包含 $n$ 个整数 $l_1, l_2, \ldots, l_n$($0 \leq l_i < 100$),其中 $l_i$ 表示第 $i$ 个机器人在其所在队伍中前方的机器人数量。
所有测试用例中 $n$ 的总和不超过 $200$。
输出格式
对于每个测试用例,如果存在一种机器人排列方式使得所有机器人的报告都成立,输出 "YES";否则输出 "NO"。
你可以用任意大小写输出答案。例如,"yEs"、"yes"、"Yes" 和 "YES" 都会被识别为肯定回答。
说明/提示
第一个样例测试用例中,机器人报告一致的排列示例如下:

第二个样例测试用例中,题面中已给出了一种满足机器人报告的排列方式。
在第三个测试用例中,第三个机器人声称它前面有两个机器人。在这种情况下,紧挨着它前面的机器人应该报告前面有一个机器人。但没有机器人报告为 $1$,因此不存在有效的排列方式。
由 ChatGPT 4.1 翻译