nn 个球放入 dd 个盒子中,一共有多少种放置方案?

#球可区分盒子可区分多球同盒允许空盒方案数约束条件
1dnd^n
2k=0d((1)kCdk(dk)n)\sum\limits_{k=0}^{d}((-1)^k·C_d^k·(d-k)^n)d1d\ge1ndn\ge d(否则无法满足 “无空盒”)
3k=0min(n,d)(CnkCdkAkk)\sum\limits_{k=0}^{min(n,d)}(C_n^k ·C_d^k·A_k^k)n1,d1n\ge1, d\ge1
4AndA_n^dndn\ge d
5k=1dS(n,k)\displaystyle \sum_{k=1}^d S(n,k)1dn1\le d\le n(超出时只是加到 k=nk=n
6S(n,d)S(n,d)1dn1\le d\le n
7k=0min(n,d)(nk)\displaystyle \sum_{k=0}^{\min(n,d)}\binom n k
8CndC_n^d0dn0\le d\le n
9C_{n+d-1}^
10C_{n-1}^nd1n\ge d\ge1
11k=0min(n,d)Cnk\sum\limits_{k=0}^{\min(n,d)}C_n^k
12CndC_n^d0dn0\le d\le n
13k=1dp(n,k)\displaystyle \sum_{k=1}^d p(n,k)n1,d1n\ge1, d\ge1
14p(n,d)p(n,d)1dn1\le d\le n
15min(n,d)+1\min(n,d)+1
1611n=dn=d

# 解释如下

注意,以下 1616 种方案中,其中是球不会全部放完的,需要注意

# 1. 球可区分、盒子可区分、允许多球同盒、允许空盒

每个球都有 dd 种选择,最终答案是

dnd^n

# 2. 球可区分、盒子可区分、允许多球同盒、不允许空盒

如果没有限制空盒子,那么答案是 dnd^n,现在我们希望把至少一个盒子空的情况排除掉
利用容斥原理(见下方介绍):

  • 对于每个子集 k{1,...,d}k \subseteq \{1, ..., d\} 假设 kk 个盒子是空的
  • 剩下 dkd-k 个盒子可以用,球的数量仍然为 nn

至少存在一个空盒的总方案数是:

k=0d((1)k+1Cdk(dk)n)\sum\limits_{k=0}^{d}((-1)^{k+1}·C_d^k·(d-k)^n)

所以最终答案为

dnk=0d((1)k+1Cdk(dk)n)=k=0d((1)kCdk(dk)n)d^n - \sum\limits_{k=0}^{d}((-1)^{k+1}·C_d^k·(d-k)^n)=\sum\limits_{k=0}^{d}((-1)^k·C_d^k·(d-k)^n)

  • 必须满足 d1d \ge 1ndn \ge d,否则无法满足无空盒

# 3. 球可区分、盒子可区分、不允许多球同盒、允许空盒

分别选出 kk 个球和 kk 个盒子,然后 AkkA_k^k 的顺序放球

k=0min(n,d)(CnkCdkAkk)\sum\limits_{k=0}^{min(n,d)}(C_n^k ·C_d^k·A_k^k)

  • 必须满足 n1,d1n \ge 1, d \ge 1

# 4. 球可区分、盒子可区分、不允许多球同盒、不允许空盒

选出 dd 个球,排列在 dd 个盒子即可

AndA_n^d

  • 必须满足 ndn \ge d

# 5. 球可区分、盒子不可区分、允许多球同盒、允许空盒

k=1dS(n,k)\sum\limits_{k=1}^{d}S(n,k)

  • 1dn1 \le d \le n

# 6. 球可区分、盒子不可区分、允许多球同盒、不允许空盒

答案即为第二类斯特林数

S(n,d)S(n,d)

# 7. 球可区分、盒子不可区分、不允许多球同盒、允许空盒

nn 个盒子里,选出 kk 个盒子放入一个球(不一定全部放完,所以 k[0,min(n,d)]k \in [0, min(n,d)]),答案求和即可

k=0min(n,d)Cnk\sum\limits_{k=0}^{min(n,d)}C_n^k

# 8. 球可区分、盒子不可区分、不允许多球同盒、不允许空盒

因为不允许空盒,不允许多球同盒,所以必定一个球一个盒,又因为盒子不可区分,所以答案为,nn 个球中,选 dd 个球放

CndC_n^d

# 9. 球不可区分、盒子可区分、允许多球同盒、允许空盒

反过来想,n+d1n+d-1 个球,选取其中 d1d-1 个球当板
或者正着想,插第一个板的时候,有 n+1n+1 种方案,插第二个的时候,有 n+2n+2 种,以此类推,插到 m1m-1 个板的时候,有 n+m1n+m-1 种方案,但是板本身是没有顺序的,故答案要除以 Am1m1A_{m-1}^{m-1},即为
(n+1)(n+m1)/Am1m1(n+1)···(n+m-1) / A_{m-1}^{m-1} 即为下方式子

天才 HYCHYC 的天才思想

Cn+d1d1C_{n+d-1}^{d-1}

这个比较重要,也是考试中常出现的, aa 个苹果和 bb 个香蕉排序,结果有多少种?

# 10. 球不可区分、盒子可区分、允许多球同盒、不允许空盒

简单插板法,n1n-1 个空插 d1d-1 个板

Cn1d1C_{n-1}^{d-1}

  • nd1n \ge d \ge 1

# 11. 球不可区分、盒子可区分、不允许多球同盒、允许空盒

这题其实就是放入 kk 个球进入 kk 个盒子(因为没有说球要全部放完)

k=0min(n,d)Cnk\sum\limits_{k=0}^{min(n,d)}C_n^k

# 12. 球不可区分、盒子可区分、不允许多球同盒、不允许空盒

nn 个球选 dd 个球去放即可,方案数即为

CndC_n^d

# 13. 球不可区分、盒子不可区分、允许多球同盒、允许空盒

因为允许空盒,所以选 kk 个盒子出来放球,答案是整数分拆数的和(下方有介绍)

k=1dp(n,k)\sum\limits_{k=1}^{d} p(n,k)

# 14. 球不可区分、盒子不可区分、允许多球同盒、不允许空盒

不允许空盒,所以每个盒子都至少放一个,故答案为整数分拆数

p(n,d)p(n,d)

  • 前置条件为 1dn1 \le d \le n

# 15. 球不可区分、盒子不可区分、不允许多球同盒、允许空盒

情况其实就是看,球和盒子谁少,谁少选谁,再加上一个都不放的情况,答案为

min(n,d)+1min(n,d)+1

# 16. 球不可区分、盒子不可区分、不允许多球同盒、不允许空盒

就一种结果,n=dn=d 时成立,方案数为

11

# 容斥原理

A1An=k=1d((1)k+11i1<...<ikdAi1Aik)|A_1 \cup \dots \cup A_n |=\sum\limits_{k=1}^{d}((-1)^{k+1}·\sum\limits_{1 \le i_1 < ... < i_k \le d} |A_{i1} \cap \dots \cap A_{ik}|)

对应到上方问题,即 AiA_i 为第 ii 个盒子是空的,答案是求等式左边,最终答案即为等式右边

# 第二类斯特林数

S2(n,k)S_2(n,k) (其实是记作 S(n,k)S(n,k),但为了两类斯特林数间做区分,此处添加了下标)表示将 nn 个两两不相同的元素,划分为 kk互不区分非空子集的方案数
递推式如下

S(n,k)=S(n1,k1)+kS(n1,k)S(n, k)=S(n-1,k-1) + k·S(n-1,k)

边界是 S(n,0)=0,S(0,0)=1,S(0,k)=0S(n,0) = 0,S(0,0)=1,S(0,k)=0

参考 Oi-Wiki
利用组合意义证明,当插入一个新元素时,有两种方案

  1. 将新元素单独放入一个子集,一共有 S(n1,k1)S(n-1, k-1) 种方案
  2. 将新元素放入现有的非空子集,一共有 kS(n1,k)k·S(n-1,k) 种方案

故答案为两式相加

通项公式为

S(n,m)=i=0m(1)miini!(mi)!S(n,m)=\sum\limits_{i=0}^{m}\frac{(-1)^{m-i}·i^n}{i!(m-i)!}

# 不妨也介绍一下第一类斯特林数

S1(n,k)S_1(n,k) 表示将 nn 个两两不相同的元素,划分为 kk互不区分非空轮换的方案数

一个轮换定义为首尾相接的一个环形排列,认为 [A,B,C,D]=[B,C,D,A]=...[A,B,C,D] = [B,C,D,A] = ...
注意,不认为两个通过翻转得到的轮换等价,即 [A,B,C,D][D,C,B,A][A,B,C,D] \neq [D, C, B, A]

递推式如下

S1(n,k)=S(n1,k1)+(n1)S1(n1,k)S_1(n, k)=S(n-1,k-1)+(n-1)·S_1(n-1,k)

边界为 S1(0,0)=1,S1(n,0)=0,S1(0,k),S1(n,n)=1,S1(n,1)=(n1)!S_1(0,0)=1,S_1(n,0)=0,S_1(0,k),S_1(n,n)=1,S_1(n,1)=(n-1)!

如何理解 S1(n,1)=(n1)!S_1(n, 1) = (n - 1)!
nn 个数如果不考虑环的话,有 n!n! 种排列,而一个长度为 nn 个环,有 nn 种表示方式,故答案为 n!n=(n1)!\frac{n!}{n}=(n-1)!

利用组合意义证明,当插入一个新元素时,有两种方案

  1. 将新元素单独放入一个新轮换,一共有 S(n1,k1)S(n-1, k-1) 种方案
  2. 将新元素放入现有的轮换,一共有 (n1)S(n1,k)(n-1)·S(n-1,k) 种方案(n1n-1 代表在 n1n-1 个缺口中插入,S(n1,k)S(n-1,k) 代表 n1n-1 个元素形成 kk 个轮换的个数)

故答案为两式相加

第一类斯特林数不存在通项公式

# 分拆数

分拆:将自然数 nn 拆分为递降正整数和的表示

n=r1+...+rk,r1r2...1n = r_1+...+r_k,~r_1 \ge r_2\ge...\ge1

分拆数pnp_n 表示自然数 nn 的分拆方法数
00 开始,自然数 nn 的分拆数如下表所示

nn0011223344\dots
pnp_n1111223355\dots

kk 部分拆数:将 nn 拆分为 kk 个正整数的和,记为 p(n,k)p(n, k) 其是下面方程的解数

n=(y1+1)+...+(yk+1),y1...yk0n=(y_1+1)+...+(y_k+1), y_1 \ge ... \ge y_k \ge 0

两边均减 kk

nk=y1+...+yk,y1...yk0n-k=y_1+...+y_k,~y_1 \ge ... \ge y_k \ge 0

如果方程里,yiy_i 恰有 jj 个为 00,则

p(n,k)=j=0kp(nk,j)p(n,k)=\sum\limits_{j=0}^{k}p(n-k,j)

相邻两个和式作差有,其递归式为

p(n,k)=p(n1,k1)+p(nk,k)p(n,k) = p(n-1,k-1)+p(n-k,k)

递归边界为

p(n,k)={1如果n=0k=00如果k=0n>00如果n<k1如果n=k1如果k=1n1p(n, k) = \begin{cases} 1 & \text{如果 } n = 0 \text{ 且 } k = 0 \\ 0 & \text{如果 } k = 0 \text{ 且 } n > 0 \\ 0 & \text{如果 } n < k \\ 1 & \text{如果 } n = k \\ 1 & \text{如果 } k = 1 \text{ 且 } n \ge 1 \\ \end{cases}