[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的时间复杂度解决本题。

posted @ 2021-12-21 18:29  Miracle_Creater  阅读(151)  评论(0)    收藏  举报