POJ 2234 Matches Game (经典Nim博弈)

来源:互联网 发布:java jvm1.5官方下载 编辑:程序博客网 时间:2024/05/22 16:00

题目连接

题意:

给你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;}



1 0