1. 程式人生 > >B.T.B.F.(博弈)

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

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,000ai1,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; }