阶梯博弈
博弈论与组合计数知识清单(含数位DP扩展)
本源码使用
$...$行内公式和$$...$$块级公式,无\(、\)、\[、\]转义,可在 Typora、GitHub、Obsidian 等支持 LaTeX 的 Markdown 编辑器中正常渲染。
1. 阶梯博弈归约证明
定理:阶梯博弈胜负由奇数级台阶石子数的异或和决定。
证明:
设 \(S_{odd} = a_1 \oplus a_3 \oplus a_5 \oplus \dots\)。
若 \(S_{odd} = 0\),则对手移动奇数级会破坏异或和,你可在奇数级上按 Nim 策略恢复;对手移动偶数级,你只需将相同数量的石子继续下移,恢复奇数级异或和。最终你必走最后一步,故为必败态。
若 \(S_{odd} \neq 0\),你可按普通 Nim 策略移动某一奇数级,使新异或和为 0,将必败态交给对手。故为必胜态。
2. 普通 Nim 必胜走法计数
给定 \(n\) 堆 \(a_i\),总异或和 \(S = a_1 \oplus \dots \oplus a_n\)。
若 \(S=0\),必胜走法数为 0。
若 \(S \neq 0\),必胜走法数为满足 \((a_i \oplus S) < a_i\) 的堆数。
快速法:取 \(S\) 的最高位,统计该位为 1 的堆数。
3. 异或和为 0 的静态构造
必要条件:总石子数 \(n\) 必须为偶数。
允许空容器:\([\frac{n}{2}, \frac{n}{2}, 0, \dots]\)
要求非空:\(m\) 为偶数且 \(n \ge m\),配对等量。
4. P 状态方案数 \(D_k(n)\) 递推
定义:\(D_k(n)\) 表示将 \(2n\) 个石子放入 \(k\) 个有标号容器,异或和为 0 的方案数。
核心变换:从每个奇数堆拿走 1 个石子,再将所有数除以 2。此变换为双射。
递推式:
当 \(i = 2x+1\)(奇数):
当 \(i = 2x+2\)(偶数):
(此处为加法,非减法)
5. 插板法(隔板法)
将 \(N\) 个相同球放入 \(M\) 个有标号盒子(允许空):
若要求每个盒子至少 1 个:
6. 洛谷 P5363 映射
棋盘长 \(N\),金币数 \(m\),空格数 \(n = N-m\)。
金币产生 \(m+1\) 个空隙,编号 \(0\) 到 \(m\)。空隙 0 为地面,不参与博弈。台阶为 \(1\) 到 \(m\)。
有效堆(奇数台阶)数:
无效堆(偶数台阶)数:
注意:不是 \((m+1)-k\),勿将地面计入。
7. 答案计算
总方案数:
必败态计数:
当 \(k_2 = 0\) 时,仅当 \(n - 2i = 0\) 时该项贡献 \(D_k(i)\),其余为 0。
答案:
8. 数位 DP 扩展(补充)
数位 DP 可逐位统计“将 \(N\) 个石子放入 \(M\) 个容器,异或和为 0”的方案数。
设 dp[pos][carry] 处理到第 \(pos\) 位,进位为 carry。枚举当前位放 1 的个数 \(c\)(\(c\) 必须为偶数),满足:
转移时乘以 \(\binom{M}{c}\)。
最终 dp[L][0] 即为答案,其中 \(L\) 取足够大的位数。
结束。 本清单已包含全部核心证明和扩展,所有公式均可正常渲染。

浙公网安备 33010602011771号