码迷,mamicode.com
首页 > 其他好文 > 详细

poj 1704 Georgia and Bob (nim)

时间:2014-10-02 22:24:33      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   for   sp   div   c   log   代码   

题意:

N个棋子,位置分别是p[1]...p[N]。

Georgia和Bob轮流,每人每次可选择其中一个棋子向左移动若干个位置(不能超过前一个棋子,不能超出最左边【位置1】且不能不移)

Georgia先手,问谁赢。

 

思路:

将棋子按位置从右到左两个两个作为一对。若棋子总个数是奇数,将第一个棋子和【位置0】作为一对。(可想象位置0放了一个棋子)。

情况一:先手若移动某对棋子中的第一个棋子K位,则后手可将该对棋子中的第二个棋子也移动K位。即这种情况不对结果产生影响。

情况二:先手若移动某对棋子中的第二个棋子。可将每对棋子两个棋子之间的距离看成一堆石头的个数。则此题和取石子一模一样!

OK,直接看代码..

 

代码:

int T,n;
int p[1005], a[1005];

int main(){
    cin>>T;
    while(T--){
        scanf("%d",&n);
        rep(i,1,n) scanf("%d",&p[i]);

        sort(p+1,p+1+n);
        p[0]=0;
        int num=0;
        for(int i=n;i>0;i-=2){
            a[++num]=p[i]-p[i-1]-1;
        }

        int ans=a[1];
        rep(i,2,num){
            ans=ans^a[i];
        }

        if(ans)
            puts("Georgia will win");
        else
            puts("Bob will win");
    }
}

 

poj 1704 Georgia and Bob (nim)

标签:style   blog   color   for   sp   div   c   log   代码   

原文地址:http://www.cnblogs.com/fish7/p/4004378.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!