#include <iostream>
#include <cstdio>
#include <cstring>
#include <climits>
using namespace std;
int S[110];
int S_len = 0;
int sg[10050] = {0};
bool flag[10050] = {0};
int DFS(int state){
if ( sg[state] != INT_MIN) return sg[state];
for (int i = 0;i < S_len;++i){
if (state < S[i]) continue;
flag[ DFS(state - S[i]) ] = 1;
}
for (int i = 0;i < 10050;++i)
if ( !flag[i] )
return sg[state] = i;
}
void init(){
fill(sg,sg+10050,INT_MIN);
for (int i = 1; i < 10050;++i){
memset(flag,0,sizeof(flag));
sg[i] = DFS(i);
}
}
int main()
{
string str;
while(scanf("%d",&S_len) != EOF && S_len){
for (int i = 0;i < S_len;++i)
scanf("%d",S+i);
init();
int kase = 0;
scanf("%d",&kase);
str = "";
int l,ans = 0,x;
while(kase--){
ans = 0;
scanf("%d",&l);
while(l--){
scanf("%d",&x);
ans ^= sg[x];
}
str += ans ? "W":"L";
}
printf("%s\n",str.c_str());
}
return 0;
}
sg函数 poj 2960 S-Nim
最新推荐文章于 2023-04-07 16:52:54 发布