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

poj 1704 Georgia and Bob 博弈

时间:2014-09-23 18:44:34      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   for   div   sp   c   log   

排成一条直线的格子上有n个棋子,两个人每个人每次可以选择一枚棋子向左移动任意步数,但是不可以越过棋子,无法进行操作的一方失败,问谁会失败。

先考虑偶数个棋子时的情况,将棋子从左到右两两配对,转化成n/2堆石子,每堆石子的个数为中间的空格数,这样每次向左移动可以看做在一堆石子中取了任意个,转换成了nim博弈,两两配对的石子中的左面的石子如果向左移动,那么相当于石子的数目会增加,但不会改变胜负状态,因为下一个人可以移动右面的石子来抵消。

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int a[1010];
int main()
{
    int n,cas;
    scanf("%d",&cas);
    while(cas--)
    {
        int i;
        scanf("%d",&n);
        for(i=0;i<n;i++) scanf("%d",&a[i]);
        if(n%2==1) a[n++]=0;
        sort(a,a+n);
        int ans=0;
        for(i=1;i<n;i+=2)
            ans^=(a[i]-a[i-1]-1);
        if(ans==0) printf("Bob will win\n");
        else printf("Georgia will win\n");
    }
    return 0;
}

 

poj 1704 Georgia and Bob 博弈

标签:style   blog   color   io   for   div   sp   c   log   

原文地址:http://www.cnblogs.com/vermouth/p/3988672.html

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