POJ 2960 S-Nim 博弈论 sg函数

时间:2023-03-08 15:45:51

http://poj.org/problem?id=2960

sg函数几乎是模板题。

调试代码的最大障碍仍然是手残在循环里打错变量名,是时候换个hydra产的机械臂了[超想要.jpg]

 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<iostream>
#include<map>
using namespace std;
const int maxn=;
int k,n,m;
int f[maxn+]={};
int a[]={};
int vis[maxn+]={};
int main(){
while(~scanf("%d",&k)){
if(!k)break;
memset(f,-,sizeof(f));
memset(vis,,sizeof(vis));
for(int i=;i<=k;i++){
scanf("%d",&a[i]);
}f[]=;
for(int i=;i<=maxn;i++){
for(int j=;j<=k;j++){
if(i-a[j]>=){
vis[f[i-a[j]]]=i;
}
}
for(int j=;j<=maxn;j++){
if(vis[j]!=i){
f[i]=j;break;
}
}
}
scanf("%d",&n);
int x,y;
for(int i=;i<=n;i++){
scanf("%d",&m);y=;
for(int j=;j<=m;j++){
scanf("%d",&x);
y^=f[x];
}
if(y)printf("W");
else printf("L");
}printf("\n");
}
return ;
}