POJ 1704 Georgia and Bob (博弈:Staircase Nim)

来源:互联网 发布:win10安装mac os x 编辑:程序博客网 时间:2024/05/22 20:25
//POJ 1704 Georgia and Bob   (Staircase Nim)/*题意:有一排的格子从左到右编号为1、2、3...,有n个石子放在上面,每个格子最多只能放一个石子  两个人轮流取石子,每次可以把取的石子往左移。  约束条件:1、不能跨越其他石子    2、不能和其他石子放在同一个格子里面思路:转化为Staircase Nim    相邻两个石子之间的空格数就是每个石子可以移动的距离,  比如可以移动n格,就可以理解成一堆石子,个数为n。    每次往左移动一个石子m格,相当于当前石子堆个数-m,而右边那堆的石子个数+m  就可以理解成把当前堆移动m个石子到右边那堆石子中。  这样就转化为Staircase Nim,最右边的那堆石子就相当于Staircase Nim的最低层。*/#include<stdio.h>#include<string.h>#include<stdlib.h>#define N 1005int T,n;int num[N];int cmp(const void *a,const void*b){return *(int *)a - *(int *)b;}int main(){int i,j;scanf("%d",&T);while(T--){scanf("%d",&n);num[0] = 0 ;for(i = 1; i <= n; ++i)scanf("%d",&num[i]);qsort(num,n+1,sizeof(num[0]),cmp);int ans = num[n]-num[n-1]-1;for(i = n-2; i > 0; i -= 2)ans ^= num[i]-num[i-1]-1;puts(ans?"Georgia will win":"Bob will win");}return 0;}

原创粉丝点击