江西省赛的J题。。。
总之就是简单博弈。。。
由于太菜没写出来呢。。。
可以说是很菜了。。。
啊啊啊啊。。。。
#include<bits/stdc++.h> #define inf 1e18 #define ll long long #define MAX 1000001 const ll N = 1e4+7; const ll mod = 1e18; using namespace std; int sg[200][200],x,y; int dfs(int n,int m){ if(sg[n][m]!=-1) return sg[n][m]; set<int> s; for(int i=1;i<n;++i){ if((i==1&&m==1)||(i==n-1&&m==1)) continue; int now=dfs(i,m)^dfs(n-i,m); s.insert(now); } for(int i=1;i<m;++i){ if((i==1&&n==1)||(i==m-1&&n==1)) continue; int now=dfs(n,i)^dfs(n,m-i); s.insert(now); } for(int i=0;i<=10000;++i){ if(!s.count(i)){ sg[n][m]=i;break; } } return sg[n][m]; } int main(){ memset(sg,-1,sizeof(sg)); sg[1][1]=sg[1][2]=sg[2][1]=sg[1][3]=sg[3][1]=0; dfs(150,150); while(scanf("%d%d",&x,&y)!=EOF){ if(sg[x][y]) puts("Alice"); else puts("Bob"); } return 0; }