vis[sg[i-S[j]]]=1; }for(intj=0; j<=maxn; j++)if(!vis[j]){ sg[i]=j;break; } } }intdfs_sg(intx) {if(sg[x]!=-1)returnsg[x]; memset(vis,0,sizeof(vis));for(inti=0; i<n; i++) {if(x>=S[i]) { dfs_sg(x-S[i]); vis[sg[x-S[i]]]=1; } }intres;f...
using namespace std; //注意 S数组要按从小到大排序 SG函数要初始化为-1 对于每个集合只需初始化1边 //不需要每求一个数的SG就初始化一边 int SG[10100],n,m,s[102],k;//k是集合s的大小 S[i]是定义的特殊取法规则的数组 int dfs(int x)//求SG[x]模板 { if(SG[x]!=-1) return SG[x];...
#include<stdio.h>#include<string.h>#include<algorithm>usingnamespacestd;//注意 S数组要按从小到大排序 SG函数要初始化为-1 对于每个集合只需初始化1边//不需要每求一个数的SG就初始化一边intSG[10100],n,m,s[102],k;//k是集合s的大小 S[i]是定义的特殊取法规则的数组intdfs(intx)//求SG[x]...