CF1836A Destroyer

题目描述

John 是独立操作系统联盟太空海军一艘驱逐舰的首席程序员。他的任务之一是检查机器人在战斗中是否受到了电子大脑的损伤。 一种标准的测试方法是命令机器人排成一行或多行,每一行的机器人应依次站立。之后,每个机器人会报告在它所在的那一行中,站在它前面的机器人数量。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1836A/4852f684dc3056e14effb6b67744c8fa8dbee24a.png) 这是一个机器人的排列示例(队伍前方在左侧)。机器人报告了上方的数字。第 $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" 都会被识别为肯定回答。

说明/提示

第一个样例测试用例中,机器人报告一致的排列示例如下: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1836A/43b66909972c39c8c77ebbd5fb94cd377f6488da.png) 第二个样例测试用例中,题面中已给出了一种满足机器人报告的排列方式。 在第三个测试用例中,第三个机器人声称它前面有两个机器人。在这种情况下,紧挨着它前面的机器人应该报告前面有一个机器人。但没有机器人报告为 $1$,因此不存在有效的排列方式。 由 ChatGPT 4.1 翻译