常用计数技巧和方法(应用篇)
常用计数技巧和方法(应用篇)
文章较长且大量使用 \(\LaTeX\) 导致渲染较慢,因此分为两个部分
由于计数方面的知识非常的繁细,容易忘记,使用时不够熟练,这里总结一下
以下内容有所借鉴百度百科和大佬的 blog %%%
基础知识请去这里 常用计数技巧和方法(理论篇)
此文章持续更新
组合论的一些实战应用
均匀分布最大次序统计量的期望为 \(\frac {k}{k+1}(n+1)\)
即从 \(1\to n\) 随机选出 k 个数最大值的期望
考虑最大值为 x 的概率
\[p(x) = \frac {x-1\choose k-1}{n \choose k} \\
\]
答案为
\[Ans = \sum_{x=1}^n p(x)*x\\=\frac {1}{n \choose k}\sum_{x=1}^n {x-1\choose k-1} \cdot x\\=\frac {k}{n \choose k}\sum_{x=1}^n {x\choose k}\\=\frac {k}{n \choose k}{n+1\choose k+1}\\=\frac {k}{k+1}(n+1)\\
\]
同理可证最小值期望为 \(\frac {n+1}{k+1}\)
洛谷P5824 十二重计数法
n 球, m 盒,球放到盒子里的方案数
球不同,盒子不同: \(m^n\)
球不同,盒子不同,每个盒子最多装一个:\(A_{m}^n\)
球不同,盒子不同,每个盒子最少装一个:容斥转化为第一问题
球不同,盒子相同:第二类斯特林数
球相同,盒子不同:隔板法
球相同,盒子相同:拆分数
拆分数多项式解法:
\(f[n][k] : n 拆分成k份方案数\)
\[f[n][k] = f[n-k][k] + f[n-1][k-1]\\S_k = S_{k-1}*x + S_k*x^k\\S_k = \frac {S_{k-1}}{1-x^k} = \prod_{j = 1}^k \frac 1{1-x^j}\\
\]
对 S 取 ln 再 exp 回去
\[G = ln(1 - x^n)\\G' = \frac{-nx^{n-1}}{1-x^n}\\= -nx^{n-1}*(1+x^n+x^{2n}+x^{3n}+\cdots)\\G = -\sum_{j=1}^{\infty}\frac{x^{nj}}{j}\\S_k = exp(\sum_{j=1}^k -G_j)
\]
错排问题的多种解法
动态规划 \(\Theta(n)\)
\(dp[x] = (x-1)(dp[x-1]+dp[x-2])\)
考虑 x 会放到哪,首先可以随便放到前 (x-1) 的位置上,就会有一个数 y 被顶出来,如果 y 放到了 x 的位置上,方案数为 \(dp[x-2]\),如果 y 不可放到 x 的位置上,将是 x - 1 大小的错排
二项式反演
一个排列的全排列可以通过枚举有几个数错位表示
\[n! = \sum_{i=0}^n{n \choose i}f(i)\\f(n) = \sum_{i=0}^n (-1)^{n-i}{n\choose i}i!\\=\sum_{i=0}^n (-1)^{n-i}\frac{n!}{(n-i)!}\\= n!\sum_{i=0}^n\frac{(-1)^i}{i!}
\]
容斥
\[f(n) = \sum_{i=0}^n(-1)^i{n\choose i}(n-i)!
\]
也可得到上方式子