AcWing 893. 集合-Nim游戏
原题链接
简单
作者:
minux
,
2020-05-01 13:35:08
,
所有人可见
,
阅读 624
#include <bits/stdc++.h>
using namespace std;
const int N=105, M=1e4+5;
int n,m;
int s[N], f[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(){
// SG()函数
cin>>m;
for(int i=0; i<m; ++i) cin>>s[i];
memset(f, -1, sizeof f);
cin>>n;
int res=0;
for(int i=0; i<n; ++i){
int x;
cin>>x;
res^=SG(x);
}
if(res)cout<<"Yes"<<endl;
else cout<<"No"<<endl;
return 0;
}
前排%%%%%%%%%