#include <iostream>
#include <algorithm>
#include <cstring>
#include <unordered_set>
using namespace std;
const int N = 110, M = 10010;
int s[N], f[M];
int n, m;
int sg(int x)
{
if (f[x] != -1) return f[x];
unordered_set<int> S;
for (int i = 0; i < m; ++ i)
{
int sum = s[i];
if (x >= sum) S.insert(sg(x - sum));
}
for (int i = 0; ; ++ i)
if (!S.count(i))
return f[x] = i;
}
int main()
{
scanf("%d", &m);
for (int i = 0; i < m; ++ i) scanf("%d", &s[i]);
scanf("%d", &n);
memset(f, -1, sizeof(f));
int res = 0;
while (n --)
{
int x;
scanf("%d", &x);
res ^= sg(x);
}
if (res) printf("Yes\n");
else printf("No\n");
return 0;
}
集合-Nim游戏
最新推荐文章于 2024-09-14 22:25:23 发布