一个奇妙的斯特林数推导

大概没啥人来看这个咸鱼的博客了吧。
虽然一直没更新,但时不时还会回来看。有些偶然的感想,或者被以前自己高妙的想法震惊到的,还会放在这里。
因为很长时间没搞OI了,数学的内容应该会多一点。

给定(n,m,k),求:

[sum_{i=0}^m{mchoose i}{n-m+2ichoose k} ]

(n,mleq 10^9,kleq 10^3)

多组询问,组数(leq 100)

[sum_{i=0}^m{mchoose i}{n-m+2ichoose k} ]

[=frac{1}{k!}sum_{i=0}^m{mchoose i}(n-m+2i)^{underline k} ]

[=frac{1}{k!}sum_{i=0}^m{mchoose i}Big(sum_{j=0}^k{kchoose j}(n-m)^{underline {k-j}}(2i)^{underline j}Big) ]

[=frac{1}{k!}sum_{j=0}^k{kchoose j}(n-m)^{underline{k-j}}Big(sum_{i=0}^m{mchoose i}(2i)^{underline j}Big) ]

考虑如何计算(sum_{i=0}^m{mchoose i}(2i)^{underline j})

[=sum_{i=0}^m{mchoose i}Big(sum_{p=0}^j(-1)^{j-p}egin{bmatrix}j\ pend{bmatrix}(2i)^pBig) ]

[=sum_{i=0}^m{mchoose i}Big(sum_{p=0}^j(-1)^{j-p}egin{bmatrix}j\ pend{bmatrix}2^pi^pBig) ]

[=sum_{p=0}^j(-1)^{j-p}egin{bmatrix}j\ pend{bmatrix}2^pBig(sum_{i=0}^m{mchoose i}i^pBig) ]

[=sum_{p=0}^j(-1)^{j-p}egin{bmatrix}j\ pend{bmatrix}2^pBig(sum_{i=0}^m{mchoose i}Big(sum_{o=0}^pegin{Bmatrix}p\ oend{Bmatrix}o!{ichoose o}Big)Big) ]

[=sum_{p=0}^j(-1)^{j-p}egin{bmatrix}j\ pend{bmatrix}2^pBig(sum_{o=0}^pegin{Bmatrix}p\ oend{Bmatrix}o!Big(sum_{i=0}^m{mchoose i}{ichoose o}Big)Big) ]

[=sum_{p=0}^j(-1)^{j-p}egin{bmatrix}j\ pend{bmatrix}2^pBig(sum_{o=0}^pegin{Bmatrix}p\ oend{Bmatrix}o!{mchoose o}2^{m-o}Big) ]

[=sum_{p=0}^j(-1)^{j-p}egin{bmatrix}j\ pend{bmatrix}2^pBig(sum_{o=0}^pegin{Bmatrix}p\ oend{Bmatrix}m^{underline o}2^{m-o}Big) ]

直接计算是(O(k^3))的,但考虑(j,o)之间的贡献:

[sum_{p=o}^j(-1)^{j-p}egin{bmatrix}j\ pend{bmatrix}2^pegin{Bmatrix}p\oend{Bmatrix} ]

是常数,可以用(O(k^3))预处理,就可以做到(O(k^2))回答询问。

(P.S.)听说这题有纯组合数做法,有没有人教教我啊

原文地址:https://www.cnblogs.com/Mr-Spade/p/12361274.html