两个无限项求和问题(生成函数)

k = 0 ∼ K k=0\sim K k=0K ∑ i = 0 ∞ p i ( i k ) \sum\limits_{i=0}^{\infty}p^i\dbinom{i}{k} i=0pi(ki)

∑ i = 0 ∞ p i ( i k ) = ∑ i = 0 ∞ p i [ x k ] ( 1 + x ) i = [ x k ] ∑ i = 0 ∞ ( p ( 1 + x ) ) i = [ x k ] 1 1 − p − p x \begin{aligned} &\sum_{i=0}^{\infty}p^i\binom{i}{k}\\ =&\sum_{i=0}^{\infty}p^i[x^k](1+x)^i\\ =&[x^k]\sum_{i=0}^{\infty}(p(1+x))^i\\ =&[x^k]\dfrac{1}{1-p-px} \end{aligned} ===i=0pi(ki)i=0pi[xk](1+x)i[xk]i=0(p(1+x))i[xk]1ppx1

于是可以 O ( K log ⁡ K ) O(K\log K) O(KlogK) 求了。

哦不好意思上面都是在瞎扯(

实际上:
∑ i = 0 ∞ p i ( i k ) = 1 k ! ∑ i = k ∞ p i i k ‾ \begin{aligned} &\sum_{i=0}^{\infty}p^i\binom{i}{k}\\ =&\dfrac{1}{k!}\sum_{i=k}^{\infty}p^i i^{\underline{k}} \end{aligned} =i=0pi(ki)k!1i=kpiik
注意到:
( 1 1 − x ) ( k ) = ( ∑ i = 0 ∞ x i ) ( k ) = ∑ i = k ∞ i k ‾ x i − k \begin{aligned} \left(\dfrac{1}{1-x}\right)^{(k)}=\left(\sum_{i=0}^{\infty}x^i\right)^{(k)}=\sum_{i=k}^{\infty}i^{\underline{k}}x^{i-k} \end{aligned} (1x1)(k)=(i=0xi)(k)=i=kikxik
而由数学归纳法可知:
( 1 1 − x ) ( k ) = k ! ( 1 − x ) k + 1 \left(\dfrac{1}{1-x}\right)^{(k)}=\dfrac{k!}{(1-x)^{k+1}} (1x1)(k)=(1x)k+1k!
那么 x k k ! ( 1 − x ) k + 1 = ∑ i = k ∞ i k ‾ x i x^k\dfrac{k!}{(1-x)^{k+1}}=\sum\limits_{i=k}^{\infty}i^{\underline{k}}x^{i} xk(1x)k+1k!=i=kikxi

于是:
∑ i = 0 ∞ p i ( i k ) = 1 k ! ∑ i = k ∞ p i i k ‾ = 1 k ! p k k ! ( 1 − p ) k + 1 \begin{aligned} &\sum_{i=0}^{\infty}p^i\binom{i}{k}\\ =&\dfrac{1}{k!}\sum_{i=k}^{\infty}p^i i^{\underline{k}}\\ =&\dfrac{1}{k!}p^k\dfrac{k!}{(1-p)^{k+1}} \end{aligned} ==i=0pi(ki)k!1i=kpiikk!1pk(1p)k+1k!
于是 O ( K ) O(K) O(K) 预处理好阶乘之后单个 p , k p,k p,k 就可以 O ( 1 ) O(1) O(1) 求了。

k = 0 ∼ K k=0\sim K k=0K ∑ i = 0 ∞ p i i k \sum\limits_{i=0}^{\infty}p^ii^k i=0piik

∑ i = 0 ∞ p i i k = ∑ i = 0 ∞ p i k ! [ x k ] e i x = k ! [ x k ] ∑ i = 0 ∞ ( p e x ) i = k ! [ x k ] 1 1 − p e x \begin{aligned} &\sum_{i=0}^{\infty}p^i i^k\\ =&\sum_{i=0}^{\infty}p^ik![x^k]e^{ix}\\ =&k![x^k]\sum_{i=0}^{\infty}(pe^x)^i\\ =&k![x^k]\frac{1}{1-pe^x} \end{aligned} ===i=0piiki=0pik![xk]eixk![xk]i=0(pex)ik![xk]1pex1

于是可以 O ( K log ⁡ K ) O(K\log K) O(KlogK) 求了。

事实上你也可以用第二类斯特林数展开 i k i^k ik,然后套用第一个问题的公式得到:
∑ i = 0 ∞ p i i k = ∑ l = 0 k { k l } p l l ! ( 1 − p ) l + 1 \sum_{i=0}^{\infty}p^ii^k=\sum_{l=0}^{k}\begin{Bmatrix}k\\l\end{Bmatrix}p^{l}\dfrac{l!}{(1-p)^{l+1}} i=0piik=l=0k{kl}pl(1p)l+1l!
这样单个 p , k p,k p,k O ( K ) O(K) O(K) 的,如果要求多个 k k k 的话就是 O ( K 2 ) O(K^2) O(K2) 的了。

所以说这次 O ( K log ⁡ K ) O(K\log K) O(KlogK) 是正经的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值