取石子
$Description$
$Solution$
蛮神仙的一道题。
其实就是 $anti-Nim$ 。
我们约定只有一颗石子的堆叫孤单堆,有多颗石子的堆叫充裕堆。
设 $f_{i, j}$ 表示有 $i$ 个孤单堆,能操作次数为 $j$ 时是 $P-position$ 还是 $N-position$ 。
转移分类讨论,有如下情况:
$1.$ 取孤单堆内石子
因为孤单堆只有一个元素,所以取了之后就是 $f_{i - 1, j}$ 这个状态。
$2.$ 把孤单堆内的石子并到充裕堆当中
显然,转移到 $f_{i -1, j + 1}$ ,注意判断此时有无充裕堆,没有的话不能转移。
$3.$ 把孤单堆两个并起来。
此处我们也要考虑两种情况,如果没有充裕堆了,就从 $f_{i - 2, j + 2}$ 转移,
否则从 $f_{i - 2, j + 3}$ 转移过来。因为根据状态的定义,我们合并了两个孤单堆,如果本来有充裕堆,那么我们就多了一次两个充裕堆合并的机会,否则就没有。
$4.$ 把充裕堆石子取出一个
首先我们判断取出后是否变为孤单堆,是的话可以从 $f_{i + 1, j - 2}$ 转移到。
其次,显然还可以从 $f_{i, j - 1}$ 转移到。
一些关于博弈 $dp$ 的看法:
分类讨论时,注意一个一个情况来,有条理些,如本题,就是先孤单堆几种情况,再充裕堆的能转移的情况。
$Code:$
1 |
|