很明显这是Nim游戏的博弈规则,加上了一点小技巧 。
回忆博弈论,当所有数异或不为0的时候,先手必胜 。
而如果异或为0,如果k不为0,即我们可以进行操作,那么我们只要有一个数能让我们拿走k个,就能使得异或不为0。
#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{
int n , k ; cin >> n >> k ;
vector<int>a(n);
int x = 0 ;
int maxi = 0 ;
for(int i = 0 ; i < n ; i++)
{
cin >> a[i] ;
x ^= a[i] ;
maxi = max(maxi , a[i]) ;
}
if(x != 0)
{
cout << "YES" << endl ;
}
else
{
if(k != 0 && maxi >= k)
{
cout << "YES" << endl ;
}
else
{
cout << "NO" << endl ;
}
}
}

京公网安备 11010502036488号