多重集排列组合问题

定义

多重集是指可以包含重复元素的广义集合。

排列问题

现在你有一个形如 { a 1 × b 1 , a 2 × b 2 , . . . , a k × b k } \{a_1\times b_1,a_2 \times b_2 , ...,a_k \times b_k\} 的多重集,其中 x × y x\times y 表示这个集合中有 x x y y ,现在问这个集合有多少种不同的排列方式

这是一道很基础的组合数学问题。

我们先考虑这些元素有多少种排列方式,显然为: ( i = 1 k a i ) ! (\sum_{i=1}^k a_i)!

但是我们还要去除相同的排列,我们注意到,这里面有 a 1 a_1 b 1 b_1 ,而这些 b 1 b_1 之间交换位置是不会形成新的排列方式的,所以我们要除以 a 1 ! a_1! ,也就是这些 b 1 b_1 之间的全排列方案数。

那么最后的答案就是:
( i = 1 k a i ) a 1 ! a 2 ! . . . a k ! \frac {(\sum_{i=1}^k a_i)} {a_1!a_2!...a_k!}

组合问题

现在你有一个形如 S = { a 1 × b 1 , a 2 × b 2 , . . . , a k × b k } S=\{a_1\times b_1,a_2 \times b_2 , ...,a_k \times b_k\} 的多重集,现在要从中选出 m m 个数,问有多少种方案。

Part 1

先考虑 m m 满足 m a i   ( i [ 1 , n ] ) m\leq a_i~(i \in [1,n]) 时的情况。

那么此时相当于没有了 a i a_i 的限制,我们设 c i c_i 表示 b i b_i 这个数选 c i c_i 个,那么需要满足 ( i = 1 n c i ) = m (\sum_{i=1}^n c_i)=m 且对于任意 i i ,有 c i 0 c_i\geq 0

那么现在问题等价于:有 k k 个按顺序摆好的不同的盘子,你要将 m m 个相同的苹果放到这 k k 个盘子里,问方案数。

那么这就是一个经典的组合数插板法问题了(不会请戳这里),方案数为 C m + k 1 k 1 = C m + k 1 m C_{m+k-1}^{k-1}=C_{m+k-1}^m

扫描二维码关注公众号,回复: 9578631 查看本文章

Part 2

在此基础上,我们再考虑 m m 没有特殊性质时的情况。

不妨先忽略 a i a_i 的影响,那么根据 Part 1 可以知道,此时的方案数为:
C m + k 1 m C_{m+k-1}^{m}

但是我们还要减去不合法的方案,设 f [ i ] f[i] 表示 b i b_i 这个数拿了至少 a i + 1 a_i+1 个的方案数。

考虑求 f [ i ] f[i] b i b_i 至少拿 a i + 1 a_i+1 个的方案数,也就是先拿 a i + 1 a_i+1 b i b_i ,然后再从剩下的里面拿 m ( a i + 1 ) m-(a_i+1) 个的方案数,也就是
f [ i ] = C m + k 1 ( a i + 1 ) m ( a i + 1 ) = C m + k 1 ( a i + 1 ) k 1 f[i]=C_{m+k-1-(a_i+1)}^{m-(a_i+1)}=C_{m+k-1-(a_i+1)}^{k-1}

那么答案就是:
C m + k 1 m i = 1 k f [ i ] C_{m+k-1}^{m}-\sum_{i=1}^k f[i]

还没完! f [ i ] f[i] 之间计算的方案数是有重复的,比如说:对于 b 1 b_1 拿了 a 1 + 1 a_1+1 个,同时 b 2 b_2 拿了 a 2 + 1 a_2+1 个,这样的不合法方案会被 f [ 1 ] f[1] f [ 2 ] f[2] 各计算一次,所以我们还需要加上 f [ i ] f [ j ]   ( i [ 1 , n ] , j [ 1 , n ] , i j ) f[i] \cap f[j]~(i\in[1,n],j\in[1,n],i \neq j)

f [ i ] f [ j ] f[i] \cap f[j] 的计算方法类似上面,即 C m + k 1 ( a i + 1 ) ( a j + 1 ) k + 1 C_{m+k-1-(a_i+1)-(a_j+1)}^{k+1}

那么这样反复容斥下去,就能得到最终的答案:
a n s = C m + k 1 m i = 1 k C m + k 1 ( a i + 1 ) k 1 + i [ 1 , n ] , j [ 1 , n ] , i j C m + k 1 ( a i + 1 ) ( a j + 1 ) k 1 + . . . + ( 1 ) k p 1 [ 1 , n ] , p 2 [ 1 , n ] , , p 1 p 2 , p 1 p 3 , C m + k 1 j = 1 k ( p j + 1 ) k 1 \begin{aligned} ans=&C_{m+k-1}^m-\sum_{i=1}^k C_{m+k-1-(a_i+1)}^{k-1} + \sum_{i\in[1,n],j\in[1,n],i \neq j} C_{m+k-1-(a_i+1)-(a_j+1)}^{k-1}\\ &+...+(-1)^k \sum_{p_1\in[1,n],p_2\in[1,n],\cdots,p1\neq p_2,p_1 \neq p_3 , \cdots} C_{m+k-1-\sum_{j=1}^k (p_j+1)}^{k-1} \end{aligned}

应用

Devu and Flowers   题解

发布了234 篇原创文章 · 获赞 100 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/a_forever_dream/article/details/102835212
今日推荐