【题解】船长 HDU - 7827

船长 HDU - 7827

题目

N个人打擂台赛,对于任意一场比赛,p_0一定能击败除了特殊的k名选手以外的所有选手,而其他的比赛一定是1/2的概率获胜。

求p_0在比赛过程中特殊的k名选手都不遇见的情况的概率。

暴力

我们自然的想到了模拟整个过程

设f_i为现在第i个人是特殊的k个人之一的概率

将k个人设为1,其余设为0

那么记赢家i' 那么 f_i'= (f_i + f_j) / 2

这样的复杂度是O(n*N)的因为是模拟了n轮,每轮有N个人,在N=2^n且n可以到60的题目上显然不可做

正解

我们注意到对于计算若i不是特殊的k个选手的话是不会对答案作出贡献的

所以只模拟k个特殊的就行了

也就是我们可以只追踪这 k 个人,看他们每轮晋级的概率。

因为k<1e5所以复杂度可行

我们再来模拟

假设w为特殊的选手(p_0)

分类讨论

若x遇到p_0:
x必须输掉,所以答案乘以1/2,x不进入下一轮

若x遇到另一个特殊选手y:
两者必有一个晋级,晋级概率为 (P_x + P_y) / 2,新编号为 x>>1

若x遇到普通人:
x有1/2概率赢,所以 P_x /= 2,新编号为 x>>1

若x轮空(当前人数为奇数时最后一人):
x直接晋级,概率不变,新编号为 x>>1

每次更新这一轮留下的点的编号和概率,模拟n轮。

可以把编号都减一,这样两个比赛的人的编号异或1就是另一个人的编号,便于维护。

posted @ 2026-08-22 16:57  Axor  阅读(3)  评论(0)    收藏  举报