问题描述
给定长度为 n 的数组 a,重复执行以下操作直至数组长度为 1:
- 选择正整数 k:满足 k<∣a∣ 且 ∣a∣/k 为整数。∣a∣为数组 a 的长度。
- 分割数组 a:将数组分割为 k 个长度相等的子序列 s1,s2,…,sk,每个元素仅属于一个子序列。
- 生成新数组:替换 a 为 [avg(s1),…,avg(sk)],其中 avg(s)=∣s∣∑i=1∣s∣si。例:avg([1,2,1,1])=41+2+1+1=1.25
任务:判断是否存在操作序列,使得最终结果为 a=[x]。
输入
每个测试包含多个测试用例。第一行包含测试用例的数量 t (1≤t≤1000)。接下来是每个测试用例的描述。
每个测试用例的第一行包含两个整数 n, x (1≤n,x≤100)——分别表示数组 a 的长度和最终期望的目标值。
第二行包含 n 个整数 a1,a2,…,an (1≤ai≤100)——即数组 a。
输出
对于每个测试用例,若存在这样的操作序列,则输出"YES"(不带引号),否则输出"NO"(不带引号)。
样例
4
1 3
3
4 9
7 11 2 5
6 9
1 9 14 12 10 8
10 10
10 10 10 10 10 10 10 10 10 10
YES
NO
YES
YES
注意
-
第一个测试用例
- 初始条件:x=3,数组 a=[3]
- 结果:直接满足条件,无需任何操作。
-
第二个测试用例
- 初始条件:x=9
- 结果:无法通过任何操作序列使最终数组变为 a=[9]。
-
第三个测试用例
- 目标值:x=9
- 可行操作序列:
- 步骤 1(k=2):
- 划分集合:
s1=[1,12,8],s2=[9,14,10]
- 计算平均值:
a=[avg(s1),avg(s2)]=[7,11]
- 步骤 2(k=1):
- 合并集合:s1=[7,11]
- 计算最终平均值:
a=[avg(s1)]=[9]
-
第四个测试用例
- 目标值:x=10
- 可行操作序列:
- 步骤 1(k=1):
- 直接选择集合:
s1=[10,10,10,10,10,10,10,10,10,10]
- 计算平均值:
a=[avg(s1)]=[10]