hdu 1536 S-Nim_求sg值模版
题意:给你很n堆石头,k代表你有k种拿法,然后给出没堆石头的数量,求胜负
直接套用模版
找了好久之前写的代码贴上来
#include<iostream> #include<algorithm> #include<cstring> using namespace std; int s[101],sg[100001],k; int mex(int m) { int vis[101]={0}; int i; for(i=0;i<k;i++) { int v=m-s[i]; if(v<0) break; if(sg[v]==-1) sg[v]=mex(v); vis[sg[v]]=1; } for(i=0;;i++) if(vis[i]==0) return i; } int main() { int i,t,n,m,ans; while(cin>>k,k) { for(i=0;i<k;i++) scanf("%d",&s[i]); sort(s,s+k); memset(sg,-1,sizeof(sg)); sg[0]=0; scanf("%d",&t); while(t--) { scanf("%d",&n); ans=0; while(n--) { scanf("%d",&m); if(sg[m]==-1) sg[m]=mex(m); ans^=sg[m]; } if(ans) printf("W"); else printf("L"); } printf("\n"); } return 0; }
不怕路长,只怕心老.