zoukankan      html  css  js  c++  java
  • [恢]hdu 1907

    2011-12-28 09:47:29

    地址:http://acm.hdu.edu.cn/showproblem.php?pid=1907

    题意:n堆石子,每次取走其中一堆的任意颗,最后一个取的人败,求判局势。

    mark:anti-nim,开始以为很简单,其实很难分析,搞了好久。具体可以参见2009年国家集训队贾志豪的论文。

    这里先给出anti-nim的结论:

    先手必胜当且仅当:1)sg值为0且不存在一堆sg值大于1;2)sg不为0且存在至少一堆sg值大于1。

    代码:

    # include <stdio.h>


    int main ()
    {
    int T, n, num, sg, flag ;
    scanf ("%d", &T) ;
    while (T--)
    {
    scanf ("%d", &n) ;
    sg = 0, flag = 0 ;
    while (n--)
    {
    scanf ("%d", &num) ;
    sg ^= num ;
    if (num > 1) flag = 1 ;
    }
    if ((sg == 0 && flag == 0)||(sg && flag)) puts ("John") ;
    else puts ("Brother") ;
    }
    return 0 ;
    }



  • 相关阅读:
    CSP2018-09
    CSP2018-03
    CSP2017-12
    CSP2017-09
    CSP2017-03
    CSP2016-12
    [算法设计与分析] 奶酪 (并查集)
    5555
    阿超
    结对作业
  • 原文地址:https://www.cnblogs.com/lzsz1212/p/2315397.html
Copyright © 2011-2022 走看看