B.T.B.F.(博弈)
阿新 • • 發佈:2018-12-25
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 100000∑n≤100000 a_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; }