对 k = 0 ∼ K k=0\sim K k=0∼K 求 ∑ i = 0 ∞ p i ( i k ) \sum\limits_{i=0}^{\infty}p^i\dbinom{i}{k} i=0∑∞pi(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=0∑∞pi(ki)i=0∑∞pi[xk](1+x)i[xk]i=0∑∞(p(1+x))i[xk]1−p−px1
于是可以 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=0∑∞pi(ki)k!1i=k∑∞piik
注意到:
(
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}
(1−x1)(k)=(i=0∑∞xi)(k)=i=k∑∞ikxi−k
而由数学归纳法可知:
(
1
1
−
x
)
(
k
)
=
k
!
(
1
−
x
)
k
+
1
\left(\dfrac{1}{1-x}\right)^{(k)}=\dfrac{k!}{(1-x)^{k+1}}
(1−x1)(k)=(1−x)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(1−x)k+1k!=i=k∑∞ikxi。
于是:
∑
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=0∑∞pi(ki)k!1i=k∑∞piikk!1pk(1−p)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=0∼K 求 ∑ i = 0 ∞ p i i k \sum\limits_{i=0}^{\infty}p^ii^k i=0∑∞piik。
∑ 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=0∑∞piiki=0∑∞pik![xk]eixk![xk]i=0∑∞(pex)ik![xk]1−pex1
于是可以 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=0∑∞piik=l=0∑k{kl}pl(1−p)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) 是正经的。