zoukankan      html  css  js  c++  java
  • POJ 3480 & HDU 1907 John(尼姆博弈变形)

    题目链接:

    PKU:http://poj.org/problem?

    id=3480

    HDU:http://acm.hdu.edu.cn/showproblem.php?

    pid=1907


    Description

    Little John is playing very funny game with his younger brother. There is one big box filled with M&Ms of different colors. At first John has to eat several M&Ms of the same color. Then his opponent has to make a turn. And so on. Please note that each player has to eat at least one M&M during his turn. If John (or his brother) will eat the last M&M from the box he will be considered as a looser and he will have to buy a new candy box.

    Both of players are using optimal game strategy. John starts first always. You will be given information about M&Ms and your task is to determine a winner of such a beautiful game.

    Input

    The first line of input will contain a single integer T – the number of test cases. Next T pairs of lines will describe tests in a following format. The first line of each test will contain an integer N – the amount of different M&M colors in a box. Next line will contain N integers Ai, separated by spaces – amount of M&Ms of i-th color.

    Constraints:
    1 <= T <= 474,
    1 <= N <= 47,
    1 <= Ai <= 4747

    Output

    Output T lines each of them containing information about game winner. Print “John” if John will win the game or “Brother” in other case.

    Sample Input

    2
    3
    3 5 1
    1
    1

    Sample Output

    John
    Brother

    Source



    PS:

    尼姆博弈变形!

    代码例如以下:

    #include <cstdio>
    #define maxn 5017
    int main()
    {
        int t;
        int a[maxn];
        int n, s, k;
        scanf("%d",&t);
        while(t--)
        {
            s = 0, k = 0;
            scanf("%d",&n);
            for(int i = 0; i < n; i++)
            {
                scanf("%d",&a[i]);
                if(a[i] > 1)
                    k++;
                s = s^a[i];
            }
            if(k == 0)//全为1
            {
                if(n%2 == 0)//偶数堆
                    printf("John
    ");
                else
                    printf("Brother
    ");
            }
            else
            {
                if(s)
                    printf("John
    ");
                else
                    printf("Brother
    ");
            }
        }
        return 0;
    }
    


  • 相关阅读:
    oracle 不走索引的原因
    SQL Server索引的维护
    Advanced SQL: Relational division in jOOQ
    文件的逻辑与物理结构
    数据库的物理结构和逻辑结构
    监控失败作业
    设计高效sql一般经验谈
    如何创建效率高sql-建立索引
    sql索引的填充因子多少最好,填充因子有什么用
    LDAP协议
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/6850029.html
Copyright © 2011-2022 走看看