一个奇妙的斯特林数推导
大概没啥人来看这个咸鱼的博客了吧。
虽然一直没更新,但时不时还会回来看。有些偶然的感想,或者被以前自己高妙的想法震惊到的,还会放在这里。
因为很长时间没搞OI了,数学的内容应该会多一点。
给定\(n,m,k\),求:
\[\sum_{i=0}^m{m\choose i}{n-m+2i\choose k}
\]
\(n,m\leq 10^9,k\leq 10^3\)
多组询问,组数\(\leq 100\)
\[\sum_{i=0}^m{m\choose i}{n-m+2i\choose k}
\]
\[=\frac{1}{k!}\sum_{i=0}^m{m\choose i}(n-m+2i)^{\underline k}
\]
\[=\frac{1}{k!}\sum_{i=0}^m{m\choose i}\Big(\sum_{j=0}^k{k\choose j}(n-m)^{\underline {k-j}}(2i)^{\underline j}\Big)
\]
\[=\frac{1}{k!}\sum_{j=0}^k{k\choose j}(n-m)^{\underline{k-j}}\Big(\sum_{i=0}^m{m\choose i}(2i)^{\underline j}\Big)
\]
考虑如何计算\(\sum_{i=0}^m{m\choose i}(2i)^{\underline j}\):
\[=\sum_{i=0}^m{m\choose i}\Big(\sum_{p=0}^j(-1)^{j-p}\begin{bmatrix}j\\ p\end{bmatrix}(2i)^p\Big)
\]
\[=\sum_{i=0}^m{m\choose i}\Big(\sum_{p=0}^j(-1)^{j-p}\begin{bmatrix}j\\ p\end{bmatrix}2^pi^p\Big)
\]
\[=\sum_{p=0}^j(-1)^{j-p}\begin{bmatrix}j\\ p\end{bmatrix}2^p\Big(\sum_{i=0}^m{m\choose i}i^p\Big)
\]
\[=\sum_{p=0}^j(-1)^{j-p}\begin{bmatrix}j\\ p\end{bmatrix}2^p\Big(\sum_{i=0}^m{m\choose i}\Big(\sum_{o=0}^p\begin{Bmatrix}p\\ o\end{Bmatrix}o!{i\choose o}\Big)\Big)
\]
\[=\sum_{p=0}^j(-1)^{j-p}\begin{bmatrix}j\\ p\end{bmatrix}2^p\Big(\sum_{o=0}^p\begin{Bmatrix}p\\ o\end{Bmatrix}o!\Big(\sum_{i=0}^m{m\choose i}{i\choose o}\Big)\Big)
\]
\[=\sum_{p=0}^j(-1)^{j-p}\begin{bmatrix}j\\ p\end{bmatrix}2^p\Big(\sum_{o=0}^p\begin{Bmatrix}p\\ o\end{Bmatrix}o!{m\choose o}2^{m-o}\Big)
\]
\[=\sum_{p=0}^j(-1)^{j-p}\begin{bmatrix}j\\ p\end{bmatrix}2^p\Big(\sum_{o=0}^p\begin{Bmatrix}p\\ o\end{Bmatrix}m^{\underline o}2^{m-o}\Big)
\]
直接计算是\(O(k^3)\)的,但考虑\(j,o\)之间的贡献:
\[\sum_{p=o}^j(-1)^{j-p}\begin{bmatrix}j\\ p\end{bmatrix}2^p\begin{Bmatrix}p\\o\end{Bmatrix}
\]
是常数,可以用\(O(k^3)\)预处理,就可以做到\(O(k^2)\)回答询问。
\(P.S.\)听说这题有纯组合数做法,有没有人教教我啊
2020.12.28
至少,我们都曾经闪耀过。
2021.10.11
突然回看博客,会推组合数做法了。
太弱小了没有力量。
\({n-m+2i\choose k}\)实际上是\(i\)的\(k\)次多项式,将其拆分为若干\({i\choose k}\)的线性叠加,分别求解题中的和式。
\[\sum_{i=0}^m{m\choose i}{i\choose k}={m\choose k}2^{m-k}
\]
可以用组合数公式证明上面的式子,但组合意义更快:式子就是统计\(m\)个元素先选任意个再选\(k\)个的方案,那么首先枚举最后选出的\(k\)个,剩下的是否出现在第一次选择中随意。