您的位置:首页 > 其它

POJ 2234 Matches Game

2016-07-25 23:16 465 查看
题意:

给你n堆石子,两个人轮流取,每个人每次只能取1~该堆个数个石子,问先手是否能够取胜。

思路:

经典的Nim游戏博弈,对于2堆石子n1、n2来说,如果n1==n2那么先手必败(这时候不管先手怎么取对手都能和先手取得一样),如果n1!=n2先手必胜(因为总可以取得使两堆石子个数一样)。然后对于多堆的石子来说,也是一样的,如果所有的石子异或和为0那么先手必败(因为都有偶数堆一样的石子,不管先手怎么取对手都能和先手取得一样),若不为0,那么先手必胜(因为。。。。。这个比较难解释Orz)。#include<cstdio>

int main(){
int n;
while(~scanf("%d",&n)){
int a,v=0;
for(int i=1;i<=n;i++){
scanf("%d",&a);
v^=a;
}
if(v) printf("Yes\n");
else printf("No\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: