[PKUWC2018]猎人杀
Posted ac-evil
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[PKUWC2018]猎人杀相关的知识,希望对你有一定的参考价值。
sol
一道生成函数题,要结合容斥。
首先有个技巧:设猎人(i)还活着,他被开枪的概率为剩下猎人中按权值分配的概率,这样很麻烦,还需要知道剩余哪些人,其实等价于人都在,但被开枪到死人时要重新开枪的概率。因为对于活着的猎人,被开枪仍然概率不变。这点很重要,因为仍然可以用(p_i=dfrac{w_i}{tot})表示概率,其中(tot=sumlimits_j w_j)。
直接算出来(1)号猎人最后挂掉的概率很麻烦,考虑容斥。设集合(Ssubset{2,3,dots,n})表示猎人编号的集合,则可以容斥得到
[ans=1+sum_{S}(-1)^{mid Smid}Pr(S)
]
(Pr(S))表示挂在(1)号猎人后面至少为(S)中的猎人的概率。现在来分析这个东西,那么显然前面若干次一定是(overline S)中的人,除了(1)号被淘汰时立刻停止,否则继续。显然是一个无穷级数的求和。记(tot=sum w_i),(sum=sum_{iin S}w_i),那么有
[egin{aligned}
Pr(S)&=sum_{i=0}^inftyleft(dfrac{tot-sum-w_1}{tot}
ight)^i imes dfrac{w_1}{tot}&=dfrac{1}{1-dfrac{tot-sum-w_i}{tot}} imesdfrac{w_1}{tot}&=dfrac{w_1}{sum+w_1}
end{aligned}
]
那么上面的式子就变成
[ans=1+sum_S(-1)^{mid Smid}dfrac{w_1}{tot+w_1}
]
根据数据范围提示,转变枚举方式,考虑枚举(tot),这个与(S)有关,记(f(i)=sum_{tot=i}(-1)^{mid Smid}),那么式子就变成了
[ans=1+sum_{i}f(i)dfrac{w_1}{i+w_1}
]
问题就变成了求解(f)。使用生成函数构造出(f),令(F=prod(1-x^{w_i})),则(f(i)=[x^i]F(x))。至此问题得解。
以上是关于[PKUWC2018]猎人杀的主要内容,如果未能解决你的问题,请参考以下文章