FAFU 1027 knight 博弈 SG函数

来源:互联网 发布:淘宝童装店铺怎么推广 编辑:程序博客网 时间:2024/06/03 16:56
//FAFU 1027 knight  博弈 SG函数/*题意:给定一张M*N的图,给T匹马的坐标       1)甲乙两个人轮流选择其中一匹马走,不能不走;       2)每匹马只能从它的左下方两个方向走;       3)无路可走的算输。 思路:预处理算出每个坐标点的SG值,然后^*/#include<stdio.h>#include<string.h>#include<stdlib.h>#define N 1005int sg[N][N];int dir[][2] = {-1,-2,-2,-1};bool vis[5];void init(){int i,j,k;for(i = 0; i <= 1000; ++i)for(j = 0; j <= 1000; ++j){memset(vis,false,sizeof(vis));for(k = 0; k < 2; ++k){int x = i + dir[k][0];int y = j + dir[k][1];if(x<0 || y<0)continue;vis[sg[x][y]] = true;}for(k = 0; k <= 2; ++k)if(!vis[k])break;sg[i][j] = k;}}int main(){init();int n,i,ans,a,b;while(scanf("%d",&n)!=EOF){ans = 0;for(i = 1; i <= n; ++i){scanf("%d %d",&a,&b);ans ^= sg[a][b];}puts(ans?"1":"0");}return 0;}

原创粉丝点击