POJ 1704 Georgia and Bob 博弈

来源:互联网 发布:大掌柜软件免费版 编辑:程序博客网 时间:2024/06/05 16:48

传送门


题目大意:
有一个棋盘,在n个格子中放有棋子,两个人轮流移动棋子,只能向左移动且至少移动一格,但是不能跨越棋子,问谁赢…


分析:
转化一下,怎么就变成Nim游戏了捏…
把相邻两个棋子看成一对,这样每相邻两对之间的空格就是一堆石子,无论对方怎么移动,自己都移动和对方移动棋子构成一对的棋子,这样就保证他们两个还是一对……..然后就变成Nim游戏了……..


代码如下:

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

by >_< neighthorn

0 0
原创粉丝点击