标签:ali end sub 容斥 方式 begin strong spl 活着
一道生成函数题,要结合容斥。
首先有个技巧:设猎人\(i\)还活着,他被开枪的概率为剩下猎人中按权值分配的概率,这样很麻烦,还需要知道剩余哪些人,其实等价于人都在,但被开枪到死人时要重新开枪的概率。因为对于活着的猎人,被开枪仍然概率不变。这点很重要,因为仍然可以用\(p_i=\dfrac{w_i}{tot}\)表示概率,其中\(tot=\sum\limits_j w_j\)。
直接算出来\(1\)号猎人最后挂掉的概率很麻烦,考虑容斥。设集合\(S\subset\{2,3,\dots,n\}\)表示猎人编号的集合,则可以容斥得到
\(Pr(S)\)表示挂在\(1\)号猎人后面至少为\(S\)中的猎人的概率。现在来分析这个东西,那么显然前面若干次一定是\(\overline S\)中的人,除了\(1\)号被淘汰时立刻停止,否则继续。显然是一个无穷级数的求和。记\(tot=\sum w_i\),\(sum=\sum_{i\in S}w_i\),那么有
那么上面的式子就变成
根据数据范围提示,转变枚举方式,考虑枚举\(tot\),这个与\(S\)有关,记\(f(i)=\sum_{tot=i}(-1)^{\mid S\mid}\),那么式子就变成了
问题就变成了求解\(f\)。使用生成函数构造出\(f\),令\(F=\prod(1-x^{w_i})\),则\(f(i)=[x^i]F(x)\)。至此问题得解。
标签:ali end sub 容斥 方式 begin strong spl 活着
原文地址:https://www.cnblogs.com/ac-evil/p/12838929.html