多重集的排列数与组合数
设
S
=
{
n
1
a
1
,
n
2
a
2
,
…
,
n
k
a
k
}
S = \{ n_1a_1,n_2a_2,…,n_ka_k\}
S={n1a1,n2a2,…,nkak} 是由
n
1
n_1
n1个
a
1
a_1
a1,
n
2
n_2
n2个
a
2
a_2
a2,…,
n
k
n_k
nk个
a
k
a_k
ak组成的多重集。
N
=
n
1
+
n
2
+
n
3
+
.
.
.
+
n
k
N=n_1+n_2+n_3+...+n_k
N=n1+n2+n3+...+nk,
n
i
n_i
ni被称为元素
a
i
a_i
ai的重数,
k
k
k成为多重集合的类别数
多重集的排列数
在 S S S 中任选 r r r 个元素的排列称为 S S S的 r r r排列,当 r = n r=n r=n时不考虑相同的元素,其全排列的个数为 ( ∑ i = 1 k n i ) ! (\sum_{i=1}^{k}n_i)! (∑i=1kni)!
S
S
S的全排列个数为:
A
=
(
∑
i
=
1
k
n
i
)
!
π
i
=
1
k
(
n
i
!
)
或
N
!
n
1
!
n
2
!
.
.
.
n
k
!
(
N
=
∑
i
=
1
k
n
i
)
A =\frac{(\sum_{i=1}^{k}n_i)!}{\pi_{i=1}^{k}(n_i!)}或\frac{N!}{n_1!n_2!...n_k!}(N=\sum_{i=1}^{k}n_i)
A=πi=1k(ni!)(∑i=1kni)!或n1!n2!...nk!N!(N=i=1∑kni)
N
=
n
1
+
n
2
+
n
3
+
.
.
.
+
n
k
N=n_1+n_2+n_3+...+n_k
N=n1+n2+n3+...+nk
多重集的组合数
在
S
S
S 中任选
r
r
r 个元素的组合称为
S
S
S的
r
r
r组合;
问题一:
给定一个多重集
S
=
{
n
1
a
1
,
n
2
a
2
,
.
.
.
,
n
k
a
k
}
S=\{n_1a_1,n_2a_2,...,n_ka_k\}
S={n1a1,n2a2,...,nkak}
以及一个整数
r
r
r,并且
r
≤
n
i
(
∀
i
∈
[
1
,
k
]
)
r≤n_i(\forall i \in[1,k])
r≤ni(∀i∈[1,k]) 【即
r
r
r小于等于
n
i
n_i
ni的最小值】
求从S中取出任意r个元素可以
n
i
n_i
ni产生的不同多重集数量
我们设
a
i
a_i
ai取
x
i
x_i
xi个,那么原问题就等价于不定方程
∑
i
=
1
k
x
i
=
r
(
x
≥
0
)
\sum^{k}_{i=1}x_i=r (x≥0)
∑i=1kxi=r(x≥0)的解的个数。
就是就是要给每个
x
i
x_i
xi赋值
[
0
,
m
]
[0,m]
[0,m]中的任意整数,且所有
x
i
x_i
xi的和为
m
m
m,
由于条件
r
≤
n
i
(
∀
i
∈
[
1
,
k
]
)
r≤n_i(\forall i \in[1,k])
r≤ni(∀i∈[1,k])所以不用考虑
x
i
>
n
i
x_i>n_i
xi>ni的情况
等价于一共有
r
r
r个苹果,分给
k
k
k个人,可以有人拿
0
0
0个苹果,求所有的方案数。
用隔板法计算,其方案数为
C
r
+
k
−
1
k
−
1
C_{r+k-1}^{k-1}
Cr+k−1k−1 【隔板法传送门】
问题二:
给定一个多重集
S
=
{
n
1
a
1
,
n
2
a
2
,
.
.
.
,
n
k
a
k
}
S=\{n_1a_1,n_2a_2,...,n_ka_k\}
S={n1a1,n2a2,...,nkak}
以及一个整数
r
r
r,并且
r
≤
∑
i
=
1
k
n
i
r≤\sum_{i=1}^{k}n_i
r≤∑i=1kni 【即
r
r
r小于
N
N
N】
求从S中取出任意r个元素可以
n
i
n_i
ni产生的不同多重集数量
先不考虑
n
i
n_i
ni个元素的限制,即从多重集
S
′
=
{
∞
a
1
,
∞
a
2
,
…
,
∞
a
k
}
S^′= \{∞a_1,∞a_2,…,∞a_k\}
S′={∞a1,∞a2,…,∞ak}中取
r
r
r个元素的组合数。
此时
x
i
x_i
xi不受
n
i
n_i
ni限制,就与问题一类似,方案数为
C
r
+
k
−
1
k
−
1
C_{r+k-1}^{k-1}
Cr+k−1k−1
这里的方案数显然包含了
x
i
>
n
i
x_i>n_i
xi>ni的不合法方案
考虑每个
a
i
a_i
ai取值受
x
i
x_i
xi的限制,设不满足第
i
i
i个限制的方案集合为
F
i
F_i
Fi
即答案为
C
r
+
k
−
1
k
−
1
−
∣
⋃
i
=
1
k
F
i
∣
C_{r+k-1}^{k-1}-|\bigcup^{k}_{i=1}F_i|
Cr+k−1k−1−∣⋃i=1kFi∣
∣ ⋃ i = 1 k F i ∣ |\bigcup^{k}_{i=1}F_i| ∣⋃i=1kFi∣用容斥原理计算:
对于
F
i
F_i
Fi,我们从
S
S
S中取出
n
i
+
1
n_i+1
ni+1个
a
i
a_i
ai【即这样已经是非法方案了,那么我们选择的任意
m
−
n
i
−
1
m-n_i-1
m−ni−1个元素都是非法方案】,再从S中任意(注意可以是
a
i
a_i
ai也可以是别的)
m
−
n
i
−
1
m-n_i-1
m−ni−1个元素构成
F
i
F_i
Fi集合
这样我们可以看成是一共有
(
r
−
n
i
−
1
)
(r-n_i-1)
(r−ni−1)个苹果,分给
k
k
k个人,可以有人拿0个苹果,求所有方案数。
由问题一可得:
C
r
−
n
i
−
1
+
k
−
1
k
−
1
→
C
r
−
n
i
+
k
−
2
k
−
1
C_{r-n_i-1+k-1}^{k-1}→C_{r-n_i+k-2}^{k-1}
Cr−ni−1+k−1k−1→Cr−ni+k−2k−1
我们得出的结论是所有
x
i
>
n
i
x_i>n_i
xi>ni的不合法方案;但是我们发现我们还多算上了
∣
F
i
⋂
F
j
∣
\left|F_i\bigcap F_j\right |
∣Fi⋂Fj∣的数量。(即同时包含了至少
n
i
+
1
n_i+1
ni+1个
a
i
a_i
ai和至少
n
j
+
1
n_j+1
nj+1个
a
j
a_j
aj的多重集)
多算的原因:看上方绿色字体,我们选择剩余元素的方案中,包含同时选择了至少
n
j
+
1
n_j+1
nj+1个
a
j
a_j
aj的多重集的方案。
我们求一下
∣
F
i
⋂
F
j
∣
|F_i\bigcap F_j|
∣Fi⋂Fj∣,也就是我们取
n
i
+
1
n_i+1
ni+1个
a
i
a_i
ai,再取
n
j
+
1
n_j+1
nj+1个
a
j
a_j
aj ,其余的
r
−
n
i
−
n
j
−
2
r-n_i-n_j-2
r−ni−nj−2个元素任意取。还是类似于问题一的方法:得出
∣
F
i
⋂
F
j
∣
=
C
k
+
r
−
n
i
−
n
j
−
3
k
−
1
|F_i\bigcap F_j|=C_{k+r-n_i-n_j-3}^{k-1}
∣Fi⋂Fj∣=Ck+r−ni−nj−3k−1
反复容斥可得:
∣ ⋃ i = 1 k F i ∣ = ∑ i = 1 k C r − n i + k − 2 k − 1 − ∑ 1 ≤ i < j ≤ n C k + r − n i − n j − 3 k − 1 + . . . + ( − 1 ) k C k + r − ∑ i = 1 k n i − ( k + 1 ) k − 1 \left |\bigcup^{k}_{i=1}F_i \right| = \sum_{i=1}^{k}C_{r-n_i+k-2}^{k-1}-\sum_{1≤i<j≤n}C_{k+r-n_i-n_j-3}^{k-1}+...+(-1)^{k}C^{k-1}_{k+r-\sum_{i=1}^{k}n_i-(k+1)} ∣∣∣∣∣i=1⋃kFi∣∣∣∣∣=i=1∑kCr−ni+k−2k−1−1≤i<j≤n∑Ck+r−ni−nj−3k−1+...+(−1)kCk+r−∑i=1kni−(k+1)k−1
最终答案:
C
r
+
k
−
1
k
−
1
−
∑
i
=
1
k
C
r
−
n
i
+
k
−
2
k
−
1
+
∑
1
≤
i
<
j
≤
n
C
k
+
r
−
n
i
−
n
j
−
3
k
−
1
−
.
.
.
+
(
−
1
)
k
C
k
+
r
−
∑
i
=
1
k
n
i
−
(
k
+
1
)
k
−
1
C_{r+k-1}^{k-1}-\sum_{i=1}^{k}C_{r-n_i+k-2}^{k-1} + \sum_{1≤i<j≤n}C_{k+r-n_i-n_j-3}^{k-1} - ...+(-1)^{k}C^{k-1}_{k+r-\sum_{i=1}^{k}n_i-(k+1)}
Cr+k−1k−1−i=1∑kCr−ni+k−2k−1+1≤i<j≤n∑Ck+r−ni−nj−3k−1−...+(−1)kCk+r−∑i=1kni−(k+1)k−1