大概没啥人来看这个咸鱼的博客了吧。
虽然一直没更新,但时不时还会回来看。有些偶然的感想,或者被以前自己高妙的想法震惊到的,还会放在这里。
因为很长时间没搞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.)听说这题有纯组合数做法,有没有人教教我啊