题目
$N$个星球排成一圈,标号$0$到$N-1$。怪物在除了$0$之外的某个点。$2$个人玩游戏,他们各自有一个集合,集合内是整数。$2$个人轮流从他们自己的集合中取一个数$x$,怪物会顺时针的前进$x$步。如果一个人使得怪物走到了$0$处,就输了。
数据范围
$0\leq N \leq 7000$
做法
必胜态:能够转移到必败态的状态。
必败态:只能转移到必败态的状态。
显然,怪物在$0$处是必败态。
我们可以从必败态开始,倒推出其他状态。推不到的状态就是平局。
代码
|
|
注意
这道题与一般的SG博弈不同的是:状态需要包括当前的游戏者。这是因为游戏者不同,从当前位置能转移到的位置也不同。此题的状态应定义为(怪物的位置,当前的游戏者)。