[PKUSC2018]猎人杀
提供一个不同的推导方法。
首先,问题转化为:
每次随机选择一个猎人毙掉,其中第 $i$ 个猎人被选择到的概率为 $p_i( \sum p_i = 1)$ ,问第 $1$ 个猎人最后被毙掉的概率(如果选择到的猎人已经被毙了,那么什么都不做)。
考虑枚举时间 $t$ ,设 $dp_{m}(t)$ 为 $t$ 时间后恰好所有编号不小于 $m$ 被毙的概率。
枚举第 $m$ 个猎人被选择了多少次,可以得到:
$$ dp_{m}(t) = \sum_{i=1}^{t} C_t^i \cdot p_m^i \cdot dp_{m+1}(t-i) $$
发现是一个卷积的形式,于是设:
$$F_m(x) = \sum_{i \geq 1} \frac{p_m^i}{i!} x^i$$
于是 $dp_2(t)$ 等于 $\prod F_i(x)$ 中 $x^t$ 项的系数。最终答案为:
$$p_1 \sum_{t=0}^{\infty} \frac{1}{t!} dp_2(t) $$
考虑 $F_m(x)$ :
$$F_m(x) = \sum_{i \geq 1} \frac{p_m^i}{i!} x^i = e^{p_mx}-1$$
因为 $\sum w_i \leq 10^5$ ,所以考虑令 $y=e^{x/ \sum w_i}$ ,于是 $F_m(x) = e^{w_my}-1$ 。
所有 $F_m$ 乘起来可以用分治ntt计算。
最后一步:假设乘积中有一项 $a \cdot y^b$ ,计算它对应的答案,也就是:
$$\sum_{t=0}^{\infty} \frac{1}{t!} \cdot [x^k](a \cdot y^b)$$
把 $y=e^{x/ \sum w_i}$ 带回去发现阶乘抵消掉了,再对级数求和得:
$$a \cdot \frac{1}{1-\frac{b}{\sum w_i}}$$
可以 $O(1)$ 计算。于是可以以两个log的时间复杂度解决本题。

浙公网安备 33010602011771号