• POJ 2234 Matches Game


    题目大意:有N堆火柴,每堆火柴数告诉你,现在有两个玩家A,B,每个人每一个回合可以且仅可以在任意一堆里取出任意多根火柴(取的火柴数不能为0)

    最后取完所有的火柴的人胜利,现在问你先取的人是赢还是输(两个人足够聪明)

    分析:显然这是一道博弈论的题目。

    当两堆的时候不难发现,两堆数量相同(达到平衡状态),那么先取的人必输。

    当多堆的时候,有个平衡点,每个数对应一个二进制数(前面不足用0补上),如果N个数的个个位相加起来是偶数,那么该位是平衡位,如果所有的位都是平衡位,那么该状态为平衡状态。

    好了,今天有点晚了,就不详细写了,直接贴上代码(不懂的地方可以评论,我会详解的):

     1 #include<stdio.h>
     2 int main()
     3 {
     4     int n;
     5     while(scanf("%d",&n) !=EOF){
     6         int m,ans=0;
     7         while(n--){
     8             scanf("%d",&m);
     9             ans^=m;
    10         }
    11         if(ans) printf("Yes
    ");
    12         else printf("No
    ");
    13     }
    14     return 0;
    15 }
    View Code
  • 相关阅读:
    0. 序列
    Megacli 常用
    4. Storm可靠性
    3. Storm编程框架
    2. Storm消息流
    1.1 Storm集群安装部署步骤
    poj3723,最 大 生成树
    次短路
    无间道之并查集
    最小生成树二Kruscal算法
  • 原文地址:https://www.cnblogs.com/bokezhilu/p/3597350.html
Copyright © 2020-2023  润新知