【AtCoder Regular Contest 110 选做】D

D

题目链接:https://atcoder.jp/contests/arc110/tasks/arc110_d

此处我们应当通过实际意义理解组合数式意义

这种思路在证明组合数恒等式时常用,如范德蒙德卷积

(sum^{k}_{i=0} sum_{j+i=k} C ^{i}_{a} imes C ^{j}_{b} = C ^{k}_{a+b})

(a)个数和(b)个数((a+b)个数各不相同)中各选择若干个数,总共选择(k)个的方案数,实际上就是在(a+b)个互不相同的数中选择(k)个的方案数

考虑子问题,将题目中的小于(M)改为恰好为(M)

我们考虑(prod^{N}_{i=1}C^{A_i}_{B_i}的实际意义)

即在(B_1)个数中选(A_1)个,并且在(B_2)个数中选(A_2)个,依次类推,并且在(B_N)个数中选(A_N)

我们将(B_1,B_2,B_3,...,B_N)合为个数为(sum B_i)(M)的球,编号为(1 ightarrow M)

我们先思考为什么答案非(C^{sum A_i}_{space space space M})

很容易可以发现,无法保证对于每个(B_i),都选到了(A_i)个球

由于(B_i)的值可以改变,我们考虑加入(N-1)个插板分隔(B_i)(B_{i+1})的区间

我们可以在长度为(M)的球中混入(N-1)个插板,插板的位置随选择的球而改变,即

假设选择的空位(空位是用来放(sum{A_i})个球和(N-1)个插板的)序列为(s_1,s_2,s_3,...,s_{sum{A_i}})

那么(s_1,s_2,...,s_{A_1})这些位置放球,(s_{A_1+1})放插板,(s_{A_1+2},s_{A_1+3},...,s_{A_2+N+1})放球,(s_{A_2+N+2})放插板,以此类推

可以发现这里的(B_i)值实际上随着空位的不同而变动了,但是由于(sum B_i = M)(B_i>A_i),所以不会漏解或错误

所以问题转化为,在(M+N-1)个位置中选择((sum A_i) +N-1)个位置,答案为(C^{(sum A_i)-1}_{M+N-1})

子问题解决,我们来看最终的答案

(sum^{M}_{i=sum{A_i}}C^{(sum A_i)+N-1}_{i+N-1})

(=)

(sum^{M+N-1}_{i=sum{A_i}+N-1}C^{(sum A_i)+N-1}_{i})

想必各位都知道恒等式

(sum^{n}_{i=k}C^{k}_{i}=C^{k+1}_{n+1})

因此,

(sum^{M+N-1}_{i=(sum{A_i})+N-1}C^{(sum A_i)+N-1}_{i}=C^{(sum{A_i})+N}_{M+N})

即为答案

原文地址:https://www.cnblogs.com/WAduck/p/14124533.html