$Nimk$ 游戏 + $dp$ 计数.
- 最优策略下,白棋显然都选择右移,黑棋都选择左移.如果把每对棋子的间隔长度看做一堆石子的石子数目,那么此题就是一个 $Nim$ 游戏的变种,每次最多可以选 $d$ 堆石子进行操作.这个东西叫做 $Nimk$ 游戏.
- $Nimk$ 游戏先手必败条件:对于每个二进制位 $i$ ,所有石子数目的第 $i$ 位之和为 $d+1$ 的倍数.
- 即, $\forall i,(\sum_j(a_j>>i)\&1)\mod d+1=0$ .
- 转成 $Nimk$ 模型,有 $\frac k 2$ 堆石子,石子总数不超过 $n-k$ 个.求必胜方案数可以用总方案数 $n \choose k$ 减去必败方案数.
- 令 $f(i,j)$ 表示从第 $0$ 位开始算,已经考虑了二进制的前 $i$ 位,用掉了 $j$ 个石子的方案数.转移有:
$$
f(i+1,j+x\cdot (d+1)\cdot 2^i)+=f(i,j)\cdot {k/2 \choose x\cdot(d+1)}
$$
- 枚举 $x$ 进行转移,必败方案数就是 $\sum f(inf,j)\cdot {n-j-k/2\choose k/2}$ .
1 |
|