P14106 [ZJCPC 2017] Yet Another Game of Stones
题目描述
Alice 和 Bob 又在玩一款新的石子游戏。该游戏的规则如下:
- 游戏一开始有 $n$ 堆石子,编号从 $1$ 到 $n$。第 $i$ 堆中有 $a_i$ 个石子,并且有一个特殊约束 $b_i$。
- 两位玩家轮流移动。**两位玩家的可操作方式不同**。
- Bob 的一次合法操作是从某一堆中取走一定数量的石子(取走的数量可以是任意正整数)。
- Alice 的一次合法操作也是从某一堆中取走一定数量的石子,但受到该堆 $b_i$ 的约束:
- 若 $b_i=0$,没有任何额外约束。
- 若 $b_i=1$,Alice 只能从该堆取走奇数个石子。
- 若 $b_i=2$,Alice 只能从该堆取走偶数个石子。
注意:Bob 没有任何额外取石子的约束。
- 不能进行合法操作的人输掉比赛。
Alice 总是先手。若两人都采取最优策略,你能判断谁会赢吗?
输入格式
有多组测试数据。输入的第一行是整数 $T$,表示测试数据组数。对于每组测试数据:
第一行是一个整数 $n$($1 \le n \le 10^5$),表示石子堆的数量。
第二行包含 $n$ 个整数 $a_1,a_2,\dots,a_n$($1 \le a_i \le 10^9$),表示每堆中石子的数量。
第三行包含 $n$ 个整数 $b_1,b_2,\dots,b_n$($0 \le b_i \le 2$),表示每堆的特殊约束。
保证所有测试数据中 $n$ 的总和不超过 $10^6$。
温馨提示:本题数据量较大,建议使用更快的输入输出方式。例如,在 C++ 中可使用 scanf/printf 替代 cin/cout。
输出格式
对于每组测试数据,若 Alice 能赢,输出 "Alice"(不含引号);否则输出 "Bob"(不含引号)。
说明/提示
对于第一个测试样例,Alice 可以从第一堆取走 $3$ 个石子,然后她会赢下游戏。
对于第二个测试样例,Alice 只能取偶数个石子,因此无法在第一步取光全部石子。所以 Bob 可以在他的回合取完剩下的所有石子获胜。
对于第三个测试样例,Alice 无法在开局时进行任何操作,因此 Bob 获胜。
由 ChatGPT 5 翻译