POJ 2960 博弈-简单SG

来源:互联网 发布:php curl 异步请求 编辑:程序博客网 时间:2024/05/22 11:04

记忆化搜索,数据太水,1<=h<=10000,但数组开100也能过。

STL的东西真不能用,太慢,用STL并且在搜索的函数里开10000的数组就RE了,用数组写的并且在搜索的函数里开10000的数组就A了。。

#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<iomanip>#include <set>#include <string>#include <vector>using namespace std;int s[1000],cnt;int sg[11500];int cal(int x){if(sg[x]!=-1) return sg[x];bool f[11500];memset(f,0,sizeof(f));for(int i=1;i<=cnt;++i)if(x-s[i]>=0){int tt=cal(x-s[i]);f[tt]=true;}for(int i=0;i<=10001;++i)if(!f[i])return sg[x]=i;}int main (){int k,m,l,temp;while(scanf("%d",&k)!=EOF){if(k==0) break;cnt=0;for(int i=1;i<=k;++i){scanf("%d",&m);s[++cnt]=m;}memset(sg,-1,sizeof(sg));sg[0]=0;string ans="";scanf("%d",&m);for(int i=1;i<=m;++i){scanf("%d",&l);int res=0;while(l--){scanf("%d",&temp);res=res^cal(temp);}if(res)ans+="W";else ans+="L";}cout<<ans<<endl;}return 0;}


原创粉丝点击