zoukankan      html  css  js  c++  java
  • BZOJ 1022: [SHOI2008]小约翰的游戏John (Anti-nim)

    Time Limit: 1 Sec  Memory Limit: 162 MB
    Submit: 3134  Solved: 2003
    [Submit][Status][Discuss]

    Description

      小约翰经常和他的哥哥玩一个非常有趣的游戏:桌子上有n堆石子,小约翰和他的哥哥轮流取石子,每个人取
    的时候,可以随意选择一堆石子,在这堆石子中取走任意多的石子,但不能一粒石子也不取,我们规定取到最后一
    粒石子的人算输。小约翰相当固执,他坚持认为先取的人有很大的优势,所以他总是先取石子,而他的哥哥就聪明
    多了,他从来没有在游戏中犯过错误。小约翰一怒之前请你来做他的参谋。自然,你应该先写一个程序,预测一下
    谁将获得游戏的胜利。

    Input

      本题的输入由多组数据组成第一行包括一个整数T,表示输入总共有T组数据(T≤500)。每组数据的第一行包
    括一个整数N(N≤50),表示共有N堆石子,接下来有N个不超过5000的整数,分别表示每堆石子的数目。

    Output

      每组数据的输出占一行,每行输出一个单词。如果约翰能赢得比赛,则输出“John”,否则输出“Brother”
    ,请注意单词的大小写。

    Sample Input

    2
    3
    3 5 1
    1
    1

    Sample Output

    John
    Brother

    HINT

    裸的Anti-Nim游戏

    直接上定理

    先手必胜的条件

    所有堆的石子数都为1且游戏的SG值为0

    有些堆的石子数大于1且游戏的SG值不为0

    #include<cstdio>
    #include<queue>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    const int MAXN=1e6+10,INF=1e9+10;
    inline char nc()
    {
        static char buf[MAXN],*p1=buf,*p2=buf;
        return p1==p2&&(p2=(p1=buf)+fread(buf,1,MAXN,stdin),p1==p2)?EOF:*p1++;
    }
    inline int read()
    {
        char c=nc();int x=0,f=1;
        while(c<'0'||c>'9'){if(c=='-')f=-1;c=nc();}
        while(c>='0'&&c<='9'){x=x*10+c-'0';c=nc();}
        return x*f;
    }
    int a[MAXN];
    main()
    {
        #ifdef WIN32 
        freopen("a.in","r",stdin);
        #else
        #endif
        int QWQ=read();
        while(QWQ--)
        {
            int N=read(),one=0,allone=1,ans=0;
            for(int i=1;i<=N;i++)
            {
                a[i]=read();
                if(a[i]!=1) allone=0;
                if(a[i]>1)  one=1;
                ans=ans^a[i];
            }
            if( (ans==0&&allone) || (ans!=0&&one) ) printf("John
    ");
            else    printf("Brother
    ");
            
        }
        return 0;
    }
  • 相关阅读:
    剑指offer-二维数组中的查找
    TF-IDF(term frequency–inverse document frequency)
    Java实现中文字符串的排序功能
    当前课程
    【R】资源整理
    CentOS相关
    【转】Setting up SDL Extension Libraries on MinGW
    【转】Setting up SDL Extension Libraries on Visual Studio 2010 Ultimate
    【转】Setting up SDL Extension Libraries on Code::Blocks 12.11
    【转】Setting up SDL Extension Libraries on Visual Studio 2019 Community
  • 原文地址:https://www.cnblogs.com/zwfymqz/p/8463493.html
Copyright © 2011-2022 走看看