题解 P6620 【[2020 年联考 A 卷] 组合数问题【暂无数据】】

· · 题解

组合数问题

题目传送门

题目大意

给出一个m次多项式,a_0x+a_1x+...+a_mx^m,再给出n,x,m,p,请求出:

\sum_{k=0}^{n} f(k)x^k \binom{n}{k} n,x,p\le 10^9,m\le 10^3

思路

考场sb了,式子推出来没看到j!\times \binom{n}{j},然后就炸了。

言归正传,我们显然应该将多项式系数展开,因为不展开就一定时间复杂度与n有关系,于是就可以得到答案为:

\sum_{i=0}^{m} a_i \sum_{k=0}^{n} k^i x^k \binom{n}{k}

很显然,这个时候我们应该将k^i用第二类斯特林数展开,于是得到:

=\sum_{i=0}^{m} a_i\sum_{k=0}^{n} x^k \binom{n}{k} \sum_{j=0}^{k} \begin{Bmatrix} i\\j\end{Bmatrix}\binom{k}{j}j!

调换求和顺序又利用:

\binom{n}{m}\binom{m}{k}=\binom{n}{k}\binom{n-k}{m-k}

可以得到:

=\sum_{i=0}^{m} a_i\sum_{j=0}^{i} \begin{Bmatrix} i\\j\end{Bmatrix}j!\binom{n}{j}\sum_{k=0}^{n-j}x^{k+j} \binom{n-j}{k}

又因为:

(1+x)^n=\sum_{i=0}^{n} x^i \binom{n}{i}

所以得到:

=\sum_{i=0}^{m} a_i\sum_{j=0}^{i} \begin{Bmatrix} i\\j\end{Bmatrix}j!\binom{n}{j} x^j(1+x)^{n-j}

考试的时候sb了,没看到\binom{n}{j}j!。于是可以得到:

=\sum_{i=0}^{m} a_i \sum_{j=0}^{i} \begin{Bmatrix} i\\j\end{Bmatrix}x^j(1+x)^{n-j}n^{\underline{j}}

因为第二类斯特林数有一个递推公式:

\begin{Bmatrix} n\\m\end{Bmatrix}=\begin{Bmatrix} n-1\\m-1\end{Bmatrix}+m\begin{Bmatrix} n-1\\m\end{Bmatrix}

所以我们就可以\Theta(m^2)预处理出\begin{Bmatrix} i\\j\end{Bmatrix}

至此,我们可以\Theta(m^2)解决这个问题,做完了可以去看一下这道题。两道题是差不多的。