题目描述
题解
简单的SG函数。根据规则建立SG函数。其中sg[0]=0。
代码
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int max_n=105;
const int max_sg=10005;
int n,m,k,x,ans;
int rule[max_n],sg[max_sg],ext[max_sg];
inline void get_sg(){
memset(sg,0,sizeof(sg));
for (int i=1;i<=10000;++i){
memset(ext,0,sizeof(ext));
for (int j=1;j<=n;++j){
if (i-rule[j]<0) break;
ext[sg[i-rule[j]]]=true;
}
for (int j=0;;j++)
if (!ext[j]){
sg[i]=j;
break;
}
}
}
int main(){
// freopen("input.in","r",stdin);
while (~scanf("%d",&n)){
if (!n) break;
for (int i=1;i<=n;++i)
scanf("%d",&rule[i]);
sort(rule+1,rule+n+1);
get_sg();
scanf("%d",&m);
for (int i=1;i<=m;++i){
scanf("%d",&k);
ans=0;
for (int j=1;j<=k;++j)
scanf("%d",&x),ans^=sg[x];
if (!ans) printf("L");
else printf("W");
}
printf("\n");
}
}