浅谈——范德蒙德卷积

· · 算法·理论

介绍

范德蒙德卷积确实是卷积的一种,但不是多项式卷积。主要用处是组合数的降维。

标准形式:

\displaystyle\sum_{i=0}^k {n \choose i}{m \choose k-i}={n+m\choose k}

注意到时间复杂度从 O(k) 变成了 O(1)

证明

常见证明有两种:

借助二项式定理

引理:(a+b)^n=\displaystyle\sum_{k=0}^n {n\choose k}a^{n-k}b^k

此时逆着做得到(更换 a,b,n 的值):

\begin{aligned} \displaystyle\sum_{k=0}^{n+m}{n+m \choose k} x^k&=(x+1)^{n+m}\\ &=(x+1)^n(x+1)^m\\ &=\bigg(\displaystyle\sum_{i=0}^n{n\choose i}x^i\bigg)\bigg(\displaystyle\sum_{j=0}^m{m\choose j}x^j\bigg)\\ &=\displaystyle\sum_{k=0}^{n+m}\displaystyle\sum_{i=0}^k{n\choose i}{m\choose k-i} x^k \end{aligned}

最后一步令 k=i+j,则固定 k 可知 0\le i,j\le k,枚举 i 得到 j=n-i。此时只要考虑 \displaystyle{n\choose i}x^i{m\choose j}x^j。直接交换律即可。

发现此时只要满足 x^k 的系数相同即可,也即 \displaystyle{n+m \choose k}=\displaystyle\sum_{i=0}^k{n\choose i}{m\choose k-i}。发现就是范德蒙德卷积公式。

证毕。

考虑组合意义

不太严谨吧。

但是很好理解。

一个袋子里共有 n+m 个小球,从中取出 k 个小球。不妨把袋子拆成两个分别有 n 个和 m 个小球的袋子,第一个袋子取 i 个,第二个袋子取 k-i 个条件等价。

也就是上面那个式子。

推论

类似的,改变形式的常见推论,共有如下几种。

推论 1

::::info[证明] 类似主公式,易证。 :::: ### 推论 $2 ::::info[证明] $$ \begin{aligned} \displaystyle\sum_{i=1}^n{n\choose i}{n\choose i-1}&=\sum_{i=0}^{n-1}{n\choose i+1}{n\choose i}\\ &={2n\choose n-1} \end{aligned} $$ :::: ### 推论 $3 \displaystyle\sum_{i=0}^n{n\choose i}^2={2n\choose n}

::::info[证明]

\begin{aligned} \displaystyle\sum_{i=0}^n{n\choose i}^2&=\sum_{i=0}^n{n\choose i}{n\choose i}\\ &=\sum_{i=0}^n{n\choose i}{n\choose n-i}\\ &={2n\choose n} \end{aligned}

::::

推论 4

\displaystyle\sum_{i=0}^m{n\choose i}{m\choose i}={n+m \choose m}

::::info[证明]

\begin{aligned} \displaystyle\sum_{i=0}^m{n\choose i}{m\choose i}&=\displaystyle\sum_{i=0}^m{n\choose i}{m\choose m-i}\\ &={n+m\choose m} \end{aligned}

::::

例题详解

::::info[温馨提示] 例题不多啊,这里就讲 1 题吧。范德蒙德卷积多数是用在化简中的,纯题目很少。 ::::

CF785D

枚举每一个左括号 (,为了防止计数的不重复,不妨把这个左括号当成一个子序列中最后的 (

前后缀预处理得到该左括号左边的 ( 个数 a,右边的 ) 个数 b,去掉与该左括号匹配的一个,还剩 b-1 个。显然这个左括号的贡献就是 \displaystyle\sum_{i=0}^{\min(a,b-1)}{a\choose i}{b \choose i+1}

总的答案就是 \displaystyle\sum_{a,b}\sum_{i=0}^{\min(a,b-1)}{a\choose i}{b \choose i+1}。用范德蒙德卷积优化,

\begin{aligned} \displaystyle\sum_{a,b}\sum_{i=0}^{\min(a,b-1)}{a\choose i}{b \choose i+1}&=\sum_{a,b}\sum_{i=0}^{\min(a,b-1)}{a \choose a-i}{b\choose i+1}\\ &=\sum_{a,b}{a+b\choose a+1} \end{aligned}

时间复杂度 O(n)

总结

范德蒙德卷积是做题过程中压缩一重循环的技巧,当然,是有前提的。成效很明显,从 O(k)O(1)。而 0\le k \le n+m,故不妨按照 O(n+m) 来算。这可以省下一个量级,是优化组合数学题的好方法。

仅仅是因为 \text{NOIP 2025}2 题罢了。

当作课后习题吧。