题意
- n堆石子,可以做两种操作
- 对一个奇数堆石子拆分成两堆
- 合并两个偶数堆石子
- 无法操作的人判负,给定n和每堆石子个数,判断胜负
思路
- 如果没有偶数且奇数不全是1,A分解,B分解,A合并,B分解——A必胜
- 如果有偶数,所有奇数没有贡献,能合并cnt_even-1次
代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin >> n;
int cnt=0;
int flg=0;
for(int i=0;i<n;i++){
int tmp;
cin >> tmp;
if(tmp%2==0) cnt++;
else if(tmp>=3) flg=1;
}
if(cnt>0){
cout << ((cnt-1)%2?"Alice":"Bob") << endl;
}else{
cout << (flg?"Alice":"Bob") << endl;
}
return 0;
}