problem:
n堆石子,A,B两人轮流拿,每次可以在1~k堆中取任意多个,取完最后一个的胜利。
Solution:
假设第i堆石子的数目为xix_ixi
必输局面当且仅当∑t≥0∑i=1nxi⨁2t≡0(mod k+1)\sum_{t\geq0}\sum_{i=1}^{n}x_i\bigoplus2^t\equiv0(mod\ k+1)∑t≥0∑i=1nxi⨁2t≡0(mod k+1)
否则都为必胜局面。
这个东西明显可以通过组合数dp瞎搞。
proof:
对于每一个博弈问题其实就是要证明N与P情况和N->P与P->N的转化。
xix_ixi全0必然是P状态。
反之便是N状态,这是基本定义。
对于N->P:
我们考虑将xix_ixi转化成二进制。
从最左边一位即最大的t满足∑i=1nxi⨁2t≡si(mod k+1) (si≠0)\sum_{i=1}^{n}x_i\bigoplus2^t\equiv s_i(mod\ k+1)\ (s_i\neq0)∑i=1nxi⨁2t≡s

nimk游戏是两人轮流从n堆石子中拿走石子,每次可从1到k堆中取任意数量。文章介绍了必输局面的判断条件,并通过数学证明解释了如何从必输局面转化为必胜局面。证明过程中涉及二进制转换和动态规划思想,最后讨论了k=1时的nim游戏特殊情况。
2354

被折叠的 条评论
为什么被折叠?



