CF1543C Need for Pink Slips

题目描述

在击败一位 Blacklist Rival 后,你有机会从 $x$ 张隐藏的有效奖励卡片中抽取 $1$ 张。最初,$x=3$,这三张隐藏的有效奖励卡片分别是现金卡(Cash Slip)、扣押解除标记(Impound Strike Release Marker)和对手车辆的粉红卡(Pink Slip of Rival's Car)。最初,随机抽取这些卡片的概率分别为 $c$、$m$ 和 $p$。此外,还有一个波动因子 $v$。只要你没有抽到粉红卡,你可以进行任意多场 Rival Races。假设你每场比赛都能获胜,并获得一次抽取奖励卡片的机会。每次抽取时,你会以各自的概率从 $x$ 张有效卡片中抽取一张。假设你抽到某一张卡片,其抽取前的概率为 $a$,则: - 如果抽到的是粉红卡,任务结束,你将不再进行比赛。 - 否则, 1. 如果 $a\leq v$,则该卡片的概率变为 $0$,该卡片在后续所有抽取中都不再是有效卡片,$x$ 减少 $1$。同时,被移除的概率 $a$ 会平均分配给剩余的其他有效卡片。 2. 如果 $a > v$,则该卡片的概率减少 $v$,减少的概率 $v$ 会平均分配给剩余的其他有效卡片。 例如: - 若 $(c,m,p)=(0.2,0.1,0.7)$ 且 $v=0.1$,抽到现金卡后,新的概率为 $(0.1,0.15,0.75)$。 - 若 $(c,m,p)=(0.1,0.2,0.7)$ 且 $v=0.2$,抽到现金卡后,新的概率为 $(无效,0.25,0.75)$。 - 若 $(c,m,p)=(0.2,无效,0.8)$ 且 $v=0.1$,抽到现金卡后,新的概率为 $(0.1,无效,0.9)$。 - 若 $(c,m,p)=(0.1,无效,0.9)$ 且 $v=0.2$,抽到现金卡后,新的概率为 $(无效,无效,1.0)$。 你需要对手的车辆。因此,你需要计算为了抽到粉红卡,期望需要进行多少场比赛。

输入格式

输入的第一行为一个整数 $t$($1\leq t\leq 10$),表示测试用例的数量。 每个测试用例的唯一一行包含四个实数 $c$、$m$、$p$ 和 $v$($0 < c,m,p < 1$,$c+m+p=1$,$0.1\leq v\leq 0.9$)。 此外,保证 $c$、$m$、$p$ 和 $v$ 的小数点后最多有 $4$ 位。

输出格式

对于每个测试用例,输出一行一个实数,表示为了抽到粉红卡,期望需要进行的比赛场数。 如果你的答案的绝对误差或相对误差不超过 $10^{-6}$,则视为正确。 形式化地说,设你的答案为 $a$,标准答案为 $b$,当且仅当 $ \frac{|a - b|}{\max{(1, |b|)}} \le 10^{-6} $ 时,你的答案被接受。

说明/提示

对于第一个测试用例,可能的抽取序列为: - P,概率为 $0.6$; - CP,概率为 $0.2\cdot 0.7 = 0.14$; - CMP,概率为 $0.2\cdot 0.3\cdot 0.9 = 0.054$; - CMMP,概率为 $0.2\cdot 0.3\cdot 0.1\cdot 1 = 0.006$; - MP,概率为 $0.2\cdot 0.7 = 0.14$; - MCP,概率为 $0.2\cdot 0.3\cdot 0.9 = 0.054$; - MCCP,概率为 $0.2\cdot 0.3\cdot 0.1\cdot 1 = 0.006$。 因此,期望比赛场数为 $1\cdot 0.6 + 2\cdot 0.14 + 3\cdot 0.054 + 4\cdot 0.006 + 2\cdot 0.14 + 3\cdot 0.054 + 4\cdot 0.006 = 1.532$。 对于第二个测试用例,可能的抽取序列为: - P,概率为 $0.4$; - CP,概率为 $0.4\cdot 0.6 = 0.24$; - CMP,概率为 $0.4\cdot 0.4\cdot 1 = 0.16$; - MP,概率为 $0.2\cdot 0.5 = 0.1$; - MCP,概率为 $0.2\cdot 0.5\cdot 1 = 0.1$。 因此,期望比赛场数为 $1\cdot 0.4 + 2\cdot 0.24 + 3\cdot 0.16 + 2\cdot 0.1 + 3\cdot 0.1 = 1.86$。 由 ChatGPT 4.1 翻译