n 个球放入 d 个盒子中,一共有多少种放置方案?
# | 球可区分 | 盒子可区分 | 多球同盒 | 允许空盒 | 方案数 | 约束条件 |
---|
1 | 是 | 是 | 是 | 是 | dn | 无 |
2 | 是 | 是 | 是 | 否 | k=0∑d((−1)k⋅Cdk⋅(d−k)n) | d≥1 且 n≥d(否则无法满足 “无空盒”) |
3 | 是 | 是 | 否 | 是 | k=0∑min(n,d)(Cnk⋅Cdk⋅Akk) | n≥1,d≥1 |
4 | 是 | 是 | 否 | 否 | And | n≥d |
5 | 是 | 否 | 是 | 是 | k=1∑dS(n,k) | 1≤d≤n(超出时只是加到 k=n) |
6 | 是 | 否 | 是 | 否 | S(n,d) | 1≤d≤n |
7 | 是 | 否 | 否 | 是 | k=0∑min(n,d)(kn) | 无 |
8 | 是 | 否 | 否 | 否 | Cnd | 0≤d≤n |
9 | 否 | 是 | 是 | 是 | C_{n+d-1}^ | 无 |
10 | 否 | 是 | 是 | 否 | C_{n-1}^ | n≥d≥1 |
11 | 否 | 是 | 否 | 是 | k=0∑min(n,d)Cnk | 无 |
12 | 否 | 是 | 否 | 否 | Cnd | 0≤d≤n |
13 | 否 | 否 | 是 | 是 | k=1∑dp(n,k) | n≥1,d≥1 |
14 | 否 | 否 | 是 | 否 | p(n,d) | 1≤d≤n |
15 | 否 | 否 | 否 | 是 | min(n,d)+1 | 无 |
16 | 否 | 否 | 否 | 否 | 1 | n=d |
# 解释如下
注意,以下 16 种方案中,其中是球不会全部放完的,需要注意
# 1. 球可区分、盒子可区分、允许多球同盒、允许空盒
每个球都有 d 种选择,最终答案是
dn
# 2. 球可区分、盒子可区分、允许多球同盒、不允许空盒
如果没有限制空盒子,那么答案是 dn,现在我们希望把至少一个盒子空的情况排除掉
利用容斥原理(见下方介绍):
- 对于每个子集 k⊆{1,...,d} 假设 k 个盒子是空的
- 剩下 d−k 个盒子可以用,球的数量仍然为 n
至少存在一个空盒的总方案数是:
k=0∑d((−1)k+1⋅Cdk⋅(d−k)n)
所以最终答案为
dn−k=0∑d((−1)k+1⋅Cdk⋅(d−k)n)=k=0∑d((−1)k⋅Cdk⋅(d−k)n)
- 必须满足 d≥1 和 n≥d,否则无法满足无空盒
# 3. 球可区分、盒子可区分、不允许多球同盒、允许空盒
分别选出 k 个球和 k 个盒子,然后 Akk 的顺序放球
k=0∑min(n,d)(Cnk⋅Cdk⋅Akk)
- 必须满足 n≥1,d≥1
# 4. 球可区分、盒子可区分、不允许多球同盒、不允许空盒
选出 d 个球,排列在 d 个盒子即可
And
# 5. 球可区分、盒子不可区分、允许多球同盒、允许空盒
k=1∑dS(n,k)
# 6. 球可区分、盒子不可区分、允许多球同盒、不允许空盒
答案即为第二类斯特林数
S(n,d)
# 7. 球可区分、盒子不可区分、不允许多球同盒、允许空盒
从 n 个盒子里,选出 k 个盒子放入一个球(不一定全部放完,所以 k∈[0,min(n,d)]),答案求和即可
k=0∑min(n,d)Cnk
# 8. 球可区分、盒子不可区分、不允许多球同盒、不允许空盒
因为不允许空盒,不允许多球同盒,所以必定一个球一个盒,又因为盒子不可区分,所以答案为,n 个球中,选 d 个球放
Cnd
# 9. 球不可区分、盒子可区分、允许多球同盒、允许空盒
反过来想,n+d−1 个球,选取其中 d−1 个球当板
或者正着想,插第一个板的时候,有 n+1 种方案,插第二个的时候,有 n+2 种,以此类推,插到 m−1 个板的时候,有 n+m−1 种方案,但是板本身是没有顺序的,故答案要除以 Am−1m−1,即为
(n+1)⋅⋅⋅(n+m−1)/Am−1m−1 即为下方式子
天才 HYC 的天才思想
Cn+d−1d−1
这个比较重要,也是考试中常出现的, a 个苹果和 b 个香蕉排序,结果有多少种?
# 10. 球不可区分、盒子可区分、允许多球同盒、不允许空盒
简单插板法,n−1 个空插 d−1 个板
Cn−1d−1
# 11. 球不可区分、盒子可区分、不允许多球同盒、允许空盒
这题其实就是放入 k 个球进入 k 个盒子(因为没有说球要全部放完)
k=0∑min(n,d)Cnk
# 12. 球不可区分、盒子可区分、不允许多球同盒、不允许空盒
n 个球选 d 个球去放即可,方案数即为
Cnd
# 13. 球不可区分、盒子不可区分、允许多球同盒、允许空盒
因为允许空盒,所以选 k 个盒子出来放球,答案是整数分拆数的和(下方有介绍)
k=1∑dp(n,k)
# 14. 球不可区分、盒子不可区分、允许多球同盒、不允许空盒
不允许空盒,所以每个盒子都至少放一个,故答案为整数分拆数
p(n,d)
- 前置条件为 1≤d≤n
# 15. 球不可区分、盒子不可区分、不允许多球同盒、允许空盒
情况其实就是看,球和盒子谁少,谁少选谁,再加上一个都不放的情况,答案为
min(n,d)+1
# 16. 球不可区分、盒子不可区分、不允许多球同盒、不允许空盒
就一种结果,n=d 时成立,方案数为
1
# 容斥原理
∣A1∪⋯∪An∣=k=1∑d((−1)k+1⋅1≤i1<...<ik≤d∑∣Ai1∩⋯∩Aik∣)
对应到上方问题,即 Ai 为第 i 个盒子是空的,答案是求等式左边,最终答案即为等式右边
# 第二类斯特林数
S2(n,k) (其实是记作 S(n,k),但为了两类斯特林数间做区分,此处添加了下标)表示将 n 个两两不相同的元素,划分为 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)=0
参考 Oi-Wiki
利用组合意义证明,当插入一个新元素时,有两种方案
- 将新元素单独放入一个子集,一共有 S(n−1,k−1) 种方案
- 将新元素放入现有的非空子集,一共有 k⋅S(n−1,k) 种方案
故答案为两式相加
通项公式为
S(n,m)=i=0∑mi!(m−i)!(−1)m−i⋅in
# 不妨也介绍一下第一类斯特林数
S1(n,k) 表示将 n 个两两不相同的元素,划分为 k 个互不区分的非空轮换的方案数
一个轮换定义为首尾相接的一个环形排列,认为 [A,B,C,D]=[B,C,D,A]=...
注意,不认为两个通过翻转得到的轮换等价,即 [A,B,C,D]=[D,C,B,A]
递推式如下
S1(n,k)=S(n−1,k−1)+(n−1)⋅S1(n−1,k)
边界为 S1(0,0)=1,S1(n,0)=0,S1(0,k),S1(n,n)=1,S1(n,1)=(n−1)!
如何理解 S1(n,1)=(n−1)!
n 个数如果不考虑环的话,有 n! 种排列,而一个长度为 n 个环,有 n 种表示方式,故答案为 nn!=(n−1)!
利用组合意义证明,当插入一个新元素时,有两种方案
- 将新元素单独放入一个新轮换,一共有 S(n−1,k−1) 种方案
- 将新元素放入现有的轮换,一共有 (n−1)⋅S(n−1,k) 种方案(n−1 代表在 n−1 个缺口中插入,S(n−1,k) 代表 n−1 个元素形成 k 个轮换的个数)
故答案为两式相加
第一类斯特林数不存在通项公式
# 分拆数
分拆:将自然数 n 拆分为递降正整数和的表示
n=r1+...+rk, r1≥r2≥...≥1
分拆数:pn 表示自然数 n 的分拆方法数
自 0 开始,自然数 n 的分拆数如下表所示
n | | 0 | 1 | 2 | 3 | 4 | … |
---|
pn | | 1 | 1 | 2 | 3 | 5 | … |
k 部分拆数:将 n 拆分为 k 个正整数的和,记为 p(n,k) 其是下面方程的解数
n=(y1+1)+...+(yk+1),y1≥...≥yk≥0
两边均减 k 有
n−k=y1+...+yk, y1≥...≥yk≥0
如果方程里,yi 恰有 j 个为 0,则
p(n,k)=j=0∑kp(n−k,j)
相邻两个和式作差有,其递归式为
p(n,k)=p(n−1,k−1)+p(n−k,k)
递归边界为
p(n,k)=⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧10011如果 n=0 且 k=0如果 k=0 且 n>0如果 n<k如果 n=k如果 k=1 且 n≥1