[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]猎人杀的主要内容,如果未能解决你的问题,请参考以下文章

[PKUWC2018]猎人杀

PKUWC2018猎人杀

loj2541 「PKUWC2018」猎人杀

「PKUWC2018」猎人杀(概率+容斥+分治NTT)

luoguP5644 [PKUWC2018]猎人杀 概率期望+生成函数+NTT

THUWC2018 猎人杀