一个奇妙的斯特林数推导

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

给定n,m,k,求:

∑i=0m(mi)(n−m+2ik)

n,m≤109,k≤103

多组询问,组数≤100

∑i=0m(mi)(n−m+2ik)=1k!∑i=0m(mi)(n−m+2i)k―=1k!∑i=0m(mi)(∑j=0k(kj)(n−m)k−j―(2i)j―)=1k!∑j=0k(kj)(n−m)k−j―(∑i=0m(mi)(2i)j―)

考虑如何计算∑i=0m(mi)(2i)j―:

=∑i=0m(mi)(∑p=0j(−1)j−p[jp](2i)p)=∑i=0m(mi)(∑p=0j(−1)j−p[jp]2pip)=∑p=0j(−1)j−p[jp]2p(∑i=0m(mi)ip)=∑p=0j(−1)j−p[jp]2p(∑i=0m(mi)(∑o=0p{po}o!(io)))=∑p=0j(−1)j−p[jp]2p(∑o=0p{po}o!(∑i=0m(mi)(io)))=∑p=0j(−1)j−p[jp]2p(∑o=0p{po}o!(mo)2m−o)=∑p=0j(−1)j−p[jp]2p(∑o=0p{po}mo―2m−o)

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

∑p=oj(−1)j−p[jp]2p{po}

是常数,可以用O(k3)预处理,就可以做到O(k2)回答询问。

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

2020.12.28 至少,我们都曾经闪耀过。

2021.10.11

突然回看博客,会推组合数做法了。

太弱小了没有力量。

(n−m+2ik)实际上是i的k次多项式,将其拆分为若干(ik)的线性叠加,分别求解题中的和式。

∑i=0m(mi)(ik)=(mk)2m−k

可以用组合数公式证明上面的式子,但组合意义更快:式子就是统计m个元素先选任意个再选k个的方案,那么首先枚举最后选出的k个,剩下的是否出现在第一次选择中随意。