设 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
最终答案:
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