Modern Cpp写法
结论就是与第一个大于1的数的下标位置有关,记该位置为idx(下标从0开始),观察样例就知道,如果idx是偶数,那么答案是"Alice",否则答案是"Bob"。另外,若ai全为1,即不存在大于1的数,此时手动造几组n比较小的样例就会发现,若n为奇数,则答案为"Alice",否则答案为"Bob",此时不难发现,若往数组a的最后添加一组{1, 2},再按照存在大于1的数处理也是对的,这样就不需要特判了。具体查找可以使用find_if函数。
#include <iostream>
#include <vector>
#include <algorithm>
void solve(){
int n;
std::cin >> n;
std::vector<int> a(n);
for(int i = 0; i < n; i++){
std::cin >> a[i];
}
a.insert(a.end(), {1, 2});
int idx = std::find_if(a.begin(), a.end(), [&](int x){return x > 1;}) - a.begin();
std::cout << (idx & 1 ? "Bob\n" : "Alice\n");
}
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cout.tie(nullptr);
int T = 1;
std::cin >> T;
for(int i = 0; i < T; i++){
solve();
}
return 0;
}

京公网安备 11010502036488号