zoukankan      html  css  js  c++  java
  • John(博弈)

    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 no te 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.

    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. 
    Constrains: 
    1 <= T <= 474, 
    1 <= N <= 47, 
    1 <= Ai <= 4747

    Sample Input

    2
    3
    3 5 1
    1
    1

    Sample Output

    John
    Brother

    分析:博弈题,最后拿者输!

    代码:

     

    #include<iostream>
    #include<stdio.h>
    #include<cstring>
    using namespace std;
    int main()
    {
        //freopen("a.in","r",stdin);
        //freopen("aa.out","w",stdout);
        int t,n,i,in,cnt,ans;
        while(scanf("%d",&t)!=EOF)
        {
            while(t--)
            {
                scanf("%d",&n);
                cnt=0;ans=0;
                for(i=0;i<n;i++)
                {
                    scanf("%d",&in);
                    if(in==1)
                        cnt++;
                    ans^=in;
                }
                if(cnt==n)
                {
                    printf("%s
    ",(cnt%2!=1)?"John":"Brother");
                    continue;
                }
                if(ans!=0)
                    printf("John
    ");
                else
                    printf("Brother
    ");
            }
        }
        return 0;
    }
    


  • 相关阅读:
    洛谷 P4001 [ICPC-Beijing 2006]狼抓兔子
    杂题20201201
    杂题20210103
    杂题20201010
    杂题20200928
    ACL1 Contest 1 简要题解
    杂题20200906
    杂题20200623
    USACO2020DEC Gold/Platinum 解题报告
    CSP-S2020游记
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3294082.html
Copyright © 2011-2022 走看看