将 n 个球放入 k 个盒子里,求方案数。(不妨设 n⩾)
1. 球不带标号,盒子带标号,要求盒子不空
插板法,总共有 n-1 个空隙,插入 k-1 块板,方案数为 \binom{n-1}{k-1}
2. 球不带标号,盒子带标号,允许盒子为空
由于球不带标号,所以可以先给每个盒子一个球,分完之后,再让每个盒子的球数减去 1,方案数为 \binom{n+k-1}{k-1}
3. 球带标号,盒子不带标号,要求盒子不空
等价于将 n 个数划分为 k 个非空集合,也就是第二类斯特林数,方案数为 n \brace k
具体见:第二类斯特林数
4. 球带标号,盒子不带标号,允许盒子为空
可以枚举几个盒子是空的集合,方案数为 \sum\limits_{i = 0}^k {n \brace i},也称贝尔数
5. 球不带标号,盒子不带标号,允许盒子为空
记 f(i, j)
表示吧 i 个球放入 j 个盒子里的方案数
转移方程:
当 i < j 时,最多只能放 i 个盒子,则 f(i, j) = f(i, i)
当 i \geqslant j 时,
- 如果没有空盒,则问题转化为把 i-j 个球放入 j 个盒子,即 f(i-j, j)
- 如果有空盒,则问题转化为把 i 个球放入 j-1 个盒子,即 f(i, j-1)
则 f(i, j) = f(i-j, j) + f(i, j-1)
边界条件:f(0, i) = 1, i \in [1, k]
答案为 f(n, k)
6. 球不带标号,盒子不带标号,要求盒子不空
在上一题的基础上改成 f(n-k, k)
7. 球带标号,盒子带标号,允许盒子为空
每个球有 k 种放法,任意两个球之间相互独立,方案数为 k^n
8. 球带标号,盒子带标号,要求盒子不空
一种做法是容斥原理,方案数为 \sum\limits_{i=0}^{k-1} (-1)^i \binom{k}{i} (k-i)^n
另一种做法是第二类斯特林数,方案数为 {n \brace k} \cdot k!,因为盒子带标号,所以需要排序
具体见:盒子与球