码迷,mamicode.com
首页 > 其他好文 > 详细

B.T.B.F.(博弈)

时间:2018-12-25 11:22:54      阅读:487      评论:0      收藏:0      [点我收藏+]

标签:最优   desc   mat   print   otto   ice   ext   class   决赛   

B.T.B.F.
 

Description

 

一年一度的Be The Best Foodie(BTBF)大赛开始了。现在已经到了最终决赛。Alice和Bob这对老冤家再次相遇。那么这次,将鹿死谁手呢!

BTBF的规则如下:场上将提供一把刀,nn块蛋糕。双方轮流执刀。执刀的一方先选择一块蛋糕,将其切成两份,而另一方则选择一份蛋糕吃掉,最后,执刀手将剩下的蛋糕吃掉。为了化简比赛规则,我们将每一块蛋糕的大小化作一个正整数,而蛋糕被切开之后,分成的两个蛋糕必须依然为正整数。没有蛋糕可切之时,则结束比赛。最后,吃的最多的人获胜。

Alice和Bob都是前所未有的高智商大胃王,每次都一定会做全局于自己最优的选择。

Alice先行执刀。

那么,现在当给出每块蛋糕的大小时,请你预言比赛的结果。

 

Input

 

第一行一个整数TT,代表有TT组数据。

每组数据格式如下:

第一行一个正整数nn,代表有nn块蛋糕。

第二行n个正整数a_iai?,以空格间隔,代表每块蛋糕的大小。

\sum {n} \le 100000n10000a_i \le 1,000,000,000ai?1,000,000,000

 

Output

 

每组数据输出一行。若Bob吃得多,则输出“Bob”;反之则输出“Alice”。

 

Sample Input 1 

3
1
2 
1
3
2
2 2

Sample Output 1

Alice
Bob
Alice


注意:若蛋糕为1时 谁都不吃 ; 而两人吃的一样多的时候 Alice赢
记录奇偶蛋糕个数的奇偶,判断即可
#include<bits/stdc++.h>

using namespace std;

int main()
{
    int T;
    scanf("%d",&T);
    int a[100005];
    while(T--)
    {
        int n;
        scanf("%d",&n);
        int j=0,o=0;
        for(int i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
            if(a[i]==1)
                continue;
            if(a[i]%2==0)
                o++;
            else
                j++;
        }
        if((o%2==0)&&(j%2))
        {
            printf("Bob\n");
        }
        else
        {
            printf("Alice\n");
        }
    }
    return 0;
}

 

B.T.B.F.(博弈)

标签:最优   desc   mat   print   otto   ice   ext   class   决赛   

原文地址:https://www.cnblogs.com/hao-tian/p/10172363.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!