题目链接:点击打开链接
题解思路:SG模板自行百度
#include<bits/stdc++.h>
using namespace std;
const int mx = 1e4+10;
int n,m;
int st[mx],sg[mx];
void get_sg()
{
bool vis[mx];
memset(sg,0,sizeof(sg));
for(int i=1;i<mx;i++){
memset(vis,0,sizeof(vis));
for(int j=0;st[j]<=i&&j<n;j++)
vis[sg[i-st[j]]] = 1;//标记后继SG函数
for(int j=0;j<mx;j++)//找mex
if(!vis[j]){
sg[i] = j;
break;
}
}
}
int main()
{
while(scanf("%d",&n)&&n){
for(int i=0;i<n;i++){
scanf("%d",st+i);
}
sort(st,st+n);
get_sg();
for(int i=1;i<=10;i++) cout << sg[i] << endl;
scanf("%d",&m);
int a,b;
while(m--){
int sum = 0;
scanf("%d",&a);
while(a--){
scanf("%d",&b);
sum ^= sg[b];
}
putchar(sum?'W':'L');
}
puts("");
}
return 0;
}