#CF4107. 序列扩增(简单版)

序列扩增(简单版)

题目描述

这两个版本之间唯一的区别是,在这个版本中,数据范围较小。

最初,数组 aa 只包含数字 [1][1]。您可以执行多次操作来变化数组。每次操作,您可以选择 aa 的某个子数组,并将等于该子数组所有元素之和的元素添加到 aa 中。

换句话说,每次操作可以选择 k(1ka)k(1≤k≤|a|) 个不同的索引 i1,i2,,iki_1,i_2,…,i_k,并将值等于 ai1+ai2++aika_{i_1}+a_{i_2}+…+a_{i_k} 的数字插入到新数组中。

给你一个目标数组 cc。验证是否可以通过对初始数组执行一定量(可能为 00)的操作从初始数组 aa 变化到 cc

输入格式

输入的第一行包含一个整数 t(1t1000)t(1≤t≤1000) ——测试用例的数量。测试用例的描述如下。

每个测试用例的第一行包含一个整数 n(1n5000)n(1≤n≤5000),即最终数组 cc 应该具有的元素数。

每个测试用例的第二行包含 nn 个空间分隔的整数 ci(1ci5000)c_i(1≤c_i≤5000) ——最终数组 cc 的元素,应该从初始数组 aa 中获得。

保证所有测试用例的 nn 之和不超过 50005000

输出格式

对于每个测试用例,如果存在这样的操作数组,则输出YES,否则输出 NO

输出无所谓大小写。

测试样例

6
1
1
1
2
5
5 1 3 2 1
5
7 1 5 2 1
3
1 1 1
5
1 1 4 2 1
YES
NO
YES
NO
YES
YES

样例说明

对于第一个测试用例,初始数组 aa 已经等于 [1][1],所以答案是 YES

对于第二个测试用例,初始数组为 [1][1], 执行任何数量的操作都会将 aa 更改为大小至少为 22 的数组,该数组不可能仅具有元素 22,即不可能获得数组 [2][2],答案为 NO

对于第三个测试用例,我们可以执行以下操作,以获得最终给定的数组c:

  • 最初,a=[1]a=[1]
  • 通过选择子数组 [1][1],并在数组中插入 11aa 将变为 [1,1][1,1]
  • 通过选择子数组 [1,1][1,1],并在数组中间插入 1+1=21+1=2,将变为 [1,2,1][1,2,1]
  • 通过选择子数组 [1,2][1,2],并在数组的第一个 11 之后插入 1+2=31+2=3aa 将变为 [1,3,2,1][1,3,2,1]
  • 通过选择子数组 [1,3,1][1,3,1] 并在数组的开头插入 1+3+1=51+3+1=5aa 将变为 [5,1,3,2,1][5,1,3,2,1](这是我们需要获得的数组)。