#818. Y桑的求助
Y桑的求助
题目描述
Y桑被刘桑难住了,他需要你的帮助!事情的起因是这样的:
Y桑是一个数论笨蛋,线性代数和离散数学都考不及格,他很崇拜刘桑,因为刘桑是个数论高手。刘桑告诉Y桑:你要学会深入思考,换角度思考,瞎写乱画不如静下心思考一会。
Y桑听后大受启发,他拿出一个序列 ,大刀阔斧讲这个数组分割成若干段(序列的每个元素正好属于一个段,每个段是序列的一组连续的元素)。然后Y桑开始探究这些段,对于每一段都有一个长度,他把这个段的长度写在这一段的左边或右边,这样一来就形成了一个新的序列 。
例如,Y桑拿出一个序列 ,假设它被分割成如下的片段:$\color{red}{[1]} \color{black}{+} \color{blue}{[2, 3, 1]} \color{black}{+} \color{green}{[2, 3]}$ ,不同的段已经用不同的颜色标注出,那么我们可能获得新的序列 如下:
Y桑赶紧把自己的研究成果拿给刘桑看,刘桑看了嗤之以鼻,并表示要给Y桑增加难度:刘桑把所有的 序列都烧掉了,只留下 序列,但是这些 序列是夹杂着失败数据的!所以刘桑要求Y桑判断这些 序列哪些是正确的哪些是错误的。
也就是说,刘桑要求Y桑判断:对于任意一个 序列,是否可以确定它一定是通过一个存在的 序列构造出来的。
输入格式
第一行包含一个整数 ,表示测试案例的数量。
每组测试案例的第一行有一个数字 (),表示 数组的长度。
第二行有个整数()
保证所有测试案例中之和不超过。
输出格式
每个测试案例输出一行
如果通过 序列可以找到一个存在的 序列,就输出“YES”,否则输出“NO”。
样例
样例输入1
7
9
1 1 2 3 1 3 2 2 3
5
12 1 2 7 5
6
5 7 8 9 10 3
4
4 8 6 2
2
3 1
10
4 6 2 1 9 4 9 3 4 2
1
1
样例输出1
YES
YES
YES
NO
YES
YES
NO
样例解释
- 在第一个测试案例中,序列可以从序列中得到,其分割方式如下:,序列。
- 在第二个测试案例中,序列可以从序列中得到,其分割方式如下:,序列。
- 在第三个测试案例中,序列可以从序列中得到,其分割方式如下:,序列。
- 在第四个测试案例中,找不到序列 ,也就是说,它是一个失败的研究数据。