您的位置:首页 > 其它

hdu 1536 S-Nim

2013-05-25 21:22 239 查看
//Time 187ms, Memory 808K
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int s[101],h,ans[101],k,m,sg[10010];
int mex(int x)
{
if(sg[x]!=-1) return sg[x];
int i,v[101];
memset(v,0,sizeof(v));
for(i=0;i<k;i++)
{
int temp=x-s[i];
if(temp<0) break;
sg[temp]=mex(temp);
v[sg[temp]]=1;
}
for(i=0;;i++) if(!v[i])
{
return i;
}
}
int main()
{
int n;
while(cin>>k && k)
{
for(int i=0;i<k;i++)
{
cin>>s[i];
}
sort(s,s+k);
memset(ans,0,sizeof(ans));
memset(sg,-1,sizeof(sg));
sg[0]=0;
cin>>m;
for(int i=0;i<m;i++)
{
cin>>n;
for(int j=0;j<n;j++)
{
cin>>h;ans[i]^=mex(h);
}
}
for(int i=0;i<m;i++)
{
if(ans[i]) cout<<"W";
else cout<<"L";
}
cout<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hdu 博弈 sg