物品异或和

提交数: 2, 通过率: 100%, 平均分: 100

题目描述:

每个物品都有一重量值,小明想从n件物品中挑出k件并分成两组,每组中的所有物品求出异或和。

如果能够分成两组的异或和是一样的,输出yes,否则输出no。

注:在C++语言中用^表示异或运算,例如a异或b,写作a^b,a,b,c的异或之和为a^b^c。

输入格式:

第一行一个正整数 T ,表示有 T 组数据

对于每一组数据,第一行两个正整数 n,k

第二行 n 个整数 \( a_1,a_2, \dots , a_{n−1}, a_n \)

输出格式:

对于每组数据,判断能否选取 k 个人,使得k个物品分成两组它们的异或值是否可以相等。

若可以,输出 yes ,否则输出 no 。

每组输出占一行

样例输入:

1
10 5
1 2 3 4 5 6 7 8 9 10

样例输出:

yes

提示:

对于30%的数据,1<=n<=5

对于另外20%的数据,1<=n<=20

对于100%的数据,1<=T<=10, 1<=k<=n<=30,  0≤ai≤109    0 ≤ ai​ ≤ 109

时间限制: 1000ms
空间限制: 256MB