Description
有\(n\)个人,第\(i\)人有一个正整数权值\(w_i\)。
每个人死后要开枪打死另一个人,假设剩下的人权值和为\(S\),那么编号为\(i\)的活人被选中的概率为\(\frac{w_i}{S}\)。至于第一枪的话,随机选择一个人,第\(i\)个人被选中的概率为\(\frac{w_i}{\sum_{i = 1}^nw_i}\)。
问编号为\(1\)的人有多少概率成为最后一个死的人。
\(\sum_{i = 1}^n w_i\leq 10^5\)。
Solution
这思路ao神,,,
一个非常毒瘤的事情是每个人被打死的概率都在时刻变动,我们考虑让每个人被击中的概率不变。
这样的话我们规定可以向死人开枪,但是一个人不能死两次(大雾),但他可以接着往下开枪。这样的话其实和原来的模型是一样的,下面证明一下:
首先先说一个引理吧:级数\(\sum_{i = 0}^{+\infty} a^ig=\frac{g}{1 - a}(0\leq a<1)\)。
证明倒还简单。把\(g\)提出来,然后后面用等比数列求和公式可以得到\(\frac{1-a^{\infty}}{1-a}\),而\(\lim_{x\rightarrow +\infty} a^x = 0(0\leq a < 1)\),带回去就得到了\(\frac{1}{1-a}\),乘上\(g\)就是\(\frac{g}{1-a}\)。
然后我们考虑假设现在死掉的人的权值和为\(T\),总权值和为\(S\)。那么下一个死掉的人是\(i\)的概率就是: \[ \sum_{k = 0}^{\infty} (\frac{T}{S})^k\frac{w_i}{S} \] 应用上面的结论,这个东西可以化简为\(\frac{w_i}{S}\cdot\frac{S}{S - T} = \frac{w_i}{S - T}\),正是我们想要的那个概率……
但接下来还不好做……然后我们想一想我们直接做是要求了恰好0个人在\(1\)之后死,那要是我们求至少\(k\)个人在\(1\)之后死呢?
假设这\(k\)个人的权值和为\(T\),总权值和为\(S\)。那么这个集合对答案的贡献为: \[ (-1)^k\sum_{i = 0}^{\infty}(1 - \frac{T + w_1}{S})^i \frac{w_1}{S} \] 前面的\((-1)^k\)是容斥系数,然后后面的级数又可以应用上面的引理了!这次可以推出来后面的级数为\(\frac{w_1}{T + w_1}\)。
虽然推出来了式子,不过我们总不能枚举子集再容斥吧?注意到如果两个集合\(T\)一样的话,那么他们(不考虑容斥系数的话)对答案贡献一样。所以我们考虑如何去搞每个\(T\)的所有对应集合的容斥系数之和就行了,这个东西的生成函数显然是: \[ \prod_{i = 2}^n(1-x^{w_i}) \] 然后这玩意就是分治FFT的经典题了……
Code
1 |
|