Multi-SG模型是指一个单一游戏又可以分裂成多个游戏 实际上并没有改变SG函数的实质 单一游戏的SG值是 它能分裂成的多个游戏的nim和 的mex 记忆化搜索下就好了
画叉叉:两人在1*N的格子纸上轮流打叉,最先打出连续3个叉者获胜,问必胜者是谁?
#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>#define cl(x) memset(x,0,sizeof(x))using namespace std;const int N=2005;int n,sg[N];inline int SG(int x){ if (x<0) return 0; if (sg[x]!=-1) return sg[x]; bool vst[N]; cl(vst); for (int i=1;i<=x;++i) vst[SG(i-3)^SG(x-i-2)]=1; for (int i=0;i<=x && sg[x]==-1;++i) if (!vst[i]) sg[x]=i; return sg[x];}int main(){ freopen("t.in","r",stdin); freopen("t.out","w",stdout); int Sg; memset(sg,-1,sizeof(sg)); while (~scanf("%d",&n)){ Sg=SG(n); PRintf("%s/n",Sg?"1":"2"); } return 0;}新闻热点
疑难解答