P5824 十二重计数法 题解
P5824 十二重计数法 题解
\(\text{I}\):小球不同,盒子不同
每个小球都有 \(\large m\) 个盒子可选择,根据乘法原理相乘。因此答案为 \(\large m^n\) 。
\(\text{II}\):小球不同,盒子不同,每个盒子至多装一个小球
每个盒子不能装多个小球,所以第一个小球有 \(\large m\) 个盒子可选,第二个剩下 \(\large m-1\) 个可选,第三个就只有 \(\large m-2\) 个可选,以此类推。因此答案为 \(\large m^\underline n\) 。
\(\text{III}\):小球不同,盒子不同,每个盒子至少装一个小球
可以用容斥计算,强制钦定 \(\large i\) 个盒子为空,将 \(\large n\) 个小球放入剩下的 \(\large m-i\) 个可为空的盒子。因此答案为 \(\large\sum\limits_{i=0}^m(-1)^i\binom mi(m-i)^n\) 。
\(\text{IV}\):小球不同,盒子相同
若有 \(i\) 个盒子非空,则方案数为 \(\large\begin{Bmatrix}n\\i\end{Bmatrix}\) ,根据加法原理相加。因此答案为 \(\large\sum\limits_{i=0}^m\begin{Bmatrix}n\\i\end{Bmatrix}\) 。
因为 \(\large\begin{Bmatrix}n\\m\end{Bmatrix}=\sum\limits_{i=0}^m\frac{(-1)^i}{i!}\cdot\frac{(m-i)^n}{(m-i)!}=[x^m](\sum\limits_{i=0}^\infty\frac{(-1)^i}{i!})(\sum\limits_{i=0}^\infty \frac{i^n}{i!})\) ,是卷积形式,所以可以用 \(\text{NTT}\) 来快速计算同一行的第二类斯特林数。
\(\text{V}\):小球不同,盒子相同,每个盒子至多装一个小球
显然只有一种情况,即 \(\large m-n\) 个空盒子、 \(\large n\) 个非空盒子。因此答案为 \(\large[n\leqslant m]\) 。
\(\text{VI}\):小球不同,盒子相同,每个盒子至少装一个小球
注意到问题是第二类斯特林数的定义。因此答案为 \(\large\begin{Bmatrix}n\\m\end{Bmatrix}\) 。
若盒子不同则答案为 \(\large\sum\limits_{i=0}^m(-1)^i\binom mi(m-i)^n\) 。发现盒子相同时的每种方案都在盒子不同时被计算了 \(\large m!\) 次,因此 \(\large\begin{Bmatrix}n\\m\end{Bmatrix}=\frac1{m!}\large\sum\limits_{i=0}^m(-1)^i\binom mi(m-i)^n=\sum\limits_{i=0}^m\frac{(-1)^i(m-i)^n}{i!(m-i)!}\) 。
\(\text{VII}\):小球相同,盒子不同
注意到 \(\large n\) 个小球放入 \(\large m\) 个可为空的盒子的方案和 \(\large n+m\) 个小球放入 \(\large m\) 个非空的盒子的方案成双射。因此答案为 \(\large\binom{n+m-1}{m-1}\) 。
\(\text{VIII}\):小球相同,盒子不同,每个盒子至多装一个小球
从 \(\large m\) 个盒子中选出 \(\large n\) 个盒子装上小球。因此答案为 \(\large\binom mn\) 。
\(\text{IX}\):小球相同,盒子不同,每个盒子至少装一个小球
考虑在球之间的 \(\large n-1\) 个空隙选出 \(\large m-1\) 个位置插入板子,从而把 \(\large n\) 个小球划分到 \(\large m\) 个盒子里。因此答案为 \(\large\binom{n-1}{m-1}\) 。
\(\text{X}\):小球相同,盒子相同
根据不降原则,问题等价为求有多少个长度为 \(\large m\) 且元素和为 \(\large n\) 的不降序列。不妨考虑其差分序列,只要差分序列任意元素都是非负整数,就能保证原序列不降。注意到差分序列第 \(\large i\) 项 \(\large\Delta_i\) 对原序列元素和的贡献为 \(\large(m-i+1)\Delta_i\) ,因此答案的生成函数为 \(\large\prod\limits_{i=1}^m\sum\limits_{\Delta_i=0}^\infty x^{(m-i+1)\Delta_i}=\prod\limits_{i=1}^m\frac1{1-x^{m-i+1}}=\prod\limits_{i=1}^m\frac1{1-x^i}\)。因此答案为 \(\large[x^n]\prod\limits_{i=1}^m\frac1{1-x^i}\) 。
对每个因式取对数把相乘变为相加,具体就是 \(\large\prod\limits_{i=1}^m\frac1{1-x^i}=\exp(\sum\limits_{i=1}^m\ln(\frac1{1-x^i}))=\exp(\sum\limits_{i=1}^m\sum\limits_{j=1}^\infty\frac{x^{ij}}i)\) 。利用这个常见的小技巧化简后即可快速计算。
\(\text{XI}\):小球相同,盒子相同,每个盒子至多装一个小球
显然只有一种情况,即 \(\large m-n\) 个空盒子、 \(\large n\) 个非空盒子。因此答案为 \(\large[n\leqslant m]\) 。
\(\text{XII}\):小球相同,盒子相同,每个盒子至少装一个小球
先把 \(\large m\) 个小球放进 \(\large m\) 个盒子里,保证每个盒子非空,问题转化为求剩余 \(\large n-m\) 个小球放入 \(\large m\) 个可为空的盒子的方案数。因此答案为 \(\large[x^{n-m}]\prod\limits_{i=1}^m\frac1{1-x^i}\) 。