您的位置:首页 > 其它

poj 1704 Georgia and Bob(博奕)

2013-04-23 09:28 381 查看
题意:Georgia and Bob
玩游戏,在一条形格子中有N个棋子,他们可以选择任意棋子,往左移到不超过其它棋子和最左边的任意步数。谁不能走谁输。

思路:跟Nim很像,把两个棋子的距离看成一堆石子,因为如果你把左边的棋子移动任意步数,右边的棋子跟着移动相同步数就会抵消(例 2 3
3 等同于 2),这样就转换成Nim游戏了。

//176K
16MS

#include

#include

#include

using namespace std;

const int M = 1005;

int pos[M];

int main ()

{

int
i,m,n;

while
(~scanf ("%d",&n))

{

while (n --)

{

scanf ("%d",&m);

for (i = 0; i < m; i ++)

scanf ("%d",&pos[i]);

sort(pos,pos+m);

int ans = 0;

if (m&1)

{

ans = pos[0] - 1;

for (i = 2;i < m;i += 2)

ans ^= (pos[i] - pos[i-1] - 1);

}

else

{

for (i = 1;i < m;i += 2)

ans ^= (pos[i] - pos[i-1] - 1);

}

if (!ans)

printf ("Bob will win\n");

else

printf ("Georgia will win\n");

}

}

return
0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: