通过打表后可以发现,当初始石头数 (|X - Y| le 1) 时先手必败否则先手必胜。
我们考虑使用归纳证明这个结论,显然 ((1, 0), (1, 1)) 时是成立的。
基于观察,我们可以发现:
-
对于 (|X - Y| > 1) 的情况,先手总存在一种策略使得让后手取得 (|X' - Y'| le 1) 的情况。
-
对于 (|X - Y| le 1) 的情况,无论先手如何操作后手都必然能取得 (|X' - Y'| > 1) 的情况。
对于前者,不妨设 (X < Y, Y = X + k),则先手只需从 (Y) 中拿出 (lceil frac{k}{4} ceil imes 2) 即可。
对于后者,当 (X = Y) 时结论显然成立;当 (Y = X + 1) 时,两者的差值随 (Y) 中取棋数量单调递增,当取最小 (2) 个时差值也会超过 (1) 因此后者成立。
通过归纳可知判定结论的正确性。
#include <bits/stdc++.h>
using namespace std;
#define int long long
int n, m;
signed main() {
cin >> n >> m;
printf(abs(n - m) <= 1ll ? "Brown" : "Alice");
return 0;
}
基于观察如果发现博弈论的一个状态必然到达其补集,其补集总是存在一种方案到达该状态时,这个状态往往是必败态,通过类似上面的归纳即可证明。
我称这个为博弈论互补状态可转化的必败性。