您的位置:首页 > 其它

POJ 2234 Matches Game (经典Nim博弈)

2016-07-31 23:24 295 查看
题目连接

题意:

给你M堆物品,让两个人进行轮流选择,每一个人可以选择任意一堆的任意个物品,假设每个人都很聪明,求解这种情况下是前者必赢还是后者必赢,

直接Nim博弈,判断sum = A[0] ^ A[1] ^ A[2] ...即可

#include <cstdio>
#include <cstring>
#include <algorithm>

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