http://poj.org/problem?id=2960
sg函数几乎是模板题。
调试代码的最大障碍仍然是手残在循环里打错变量名,是时候换个hydra产的机械臂了[超想要.jpg]
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<cmath> 5 #include<iostream> 6 #include<map> 7 using namespace std; 8 const int maxn=10000; 9 int k,n,m; 10 int f[maxn+10]={}; 11 int a[110]={}; 12 int vis[maxn+10]={}; 13 int main(){ 14 while(~scanf("%d",&k)){ 15 if(!k)break; 16 memset(f,-1,sizeof(f)); 17 memset(vis,0,sizeof(vis)); 18 for(int i=1;i<=k;i++){ 19 scanf("%d",&a[i]); 20 }f[0]=0; 21 for(int i=1;i<=maxn;i++){ 22 for(int j=1;j<=k;j++){ 23 if(i-a[j]>=0){ 24 vis[f[i-a[j]]]=i; 25 } 26 } 27 for(int j=0;j<=maxn;j++){ 28 if(vis[j]!=i){ 29 f[i]=j;break; 30 } 31 } 32 } 33 scanf("%d",&n); 34 int x,y; 35 for(int i=1;i<=n;i++){ 36 scanf("%d",&m);y=0; 37 for(int j=1;j<=m;j++){ 38 scanf("%d",&x); 39 y^=f[x]; 40 } 41 if(y)printf("W"); 42 else printf("L"); 43 }printf("\n"); 44 } 45 return 0; 46 }