思路 :
- 1个0;2个1;4个2;8个3都是Alice胜的局面,它们之间不仅是递推的关系,相互组合也可以(比如1个1和2个2),因此,从后往前将所有元素的数量合并在0上,每次要除以2向下取整,如果最终0的数量大于等于1,则Alice胜
#include <iostream>
using namespace std;
const int N = 1e6 + 10;
int a[N];
int main() {
int _; cin >> _;
while (_ -- ) {
int n;
cin >> n;
for (int i = 0; i <= n; ++ i) {
cin >> a[i];
}
for (int i = n - 1; i >= 0; -- i) {
a[i] += a[i + 1] / 2;
}
if (a[0]) cout << "Alice" << endl;
else cout << "Bob" << endl;
}
}