TOAD 3 - Take the Last Chip

一个经典的博弈论题。

Problem

nn 个石子,A B 两人博弈,A 先手。A 首先取若干个石子(至少一个,不能取完),然后 B 和 A 再轮流取石子,每次取的石子不能超过上次取的石子数,且至少取一个,无法操作的人输。求 nn 满足什么条件时先手必胜。

增强一下:如果不能超过上次取的石子数的两倍,求先手必胜的条件?如果不能超过 f(x)f(x)xx 表示上次取的石子数, ff 是一个非降函数),求先手必胜的条件?

Solution

HH 为先手必败的 nn ,易知 1 肯定在 HH 里。

接下来我们递推出 HH 。可以证明,如果 Hi+1=Hi+HlH_{i+1} = H_i + H_l ,其中

Hl=minxi{Hxf(Hx)Hi}H_l = \min_{x \leq i} \{H_x \| f(H_x) \geq H_i \}

我们证明,若 x<Hlx < H_l 是必胜状态,则 Hi+xH_i + x 一定也是必胜状态。由于 xx 是必胜状态,所以先手一开始一定可以照着 xx 的必胜策略行动,且先手一定可以拿掉第 xx 个石子。接下来还剩 HiH_i 个石子,一开始的先手变成了后手,所以先手一定可以必胜 。

x<Hlx < H_l 是必败状态,则 Hi+xH_i + x 也是必胜状态。先手只需一开始拿走 xx 个石子,则还剩 HiH_i 个石子,后手必败,所以先手必胜。

同样,我们可以证明 Hi+HlH_i + H_l 是必败状态。若先手一开始拿走不小于 HlH_l 个石子,则后手可以把剩下的所有石子拿完。若先手一开始拿走的石子数小于 HlH_l ,则后手一定有策略拿到第 HlH_l 个石子。此时还剩下 HiH_i 个石子,先手尚未改变,所以先手必败。

f(x)=xf(x) = x 时,可以得到 H={1,2,4,8,,2t}H = \{1, 2, 4, 8, \dots, 2^t\}

f(x)=2xf(x) = 2x 时,可以得到 H={1,2,3,5,8,,fibt}H = \{1, 2, 3, 5, 8, \dots, fib_t\}