设 dpi 表示面对第 i 个标靶时,枪械未过热、可以自由选择是否开火时,从第 i 个标靶到结束能获得的最大期望命中次数。
如果跳过第 i 个标靶,则不会得分,也不会过热,期望为 dpi+1。
如果对第 i 个标靶开火,则本标靶贡献期望 pi。开火后有 1−qi 的概率枪械未过热,下一标靶仍可开火,对应 dpi+1;有 qi 的概率过热,导致必须跳过第 i+1 个标靶,过热在第 i+1 个标靶结束后自动解除,对应 dpi+2。
因此转移为:
dpi=max(dpi+1, pi+(1−qi)dpi+1+qidpi+2)一位神枪手即将参加一场射击锦标赛,赛程中共有 n 个移动标靶依次出现,编号从 1 到 n。
对于第 i 个标靶,如果他选择开火,则命中的概率为 pi,命中可获得 1 分;每次开火后,枪械会有 qi 的概率过热。一旦过热,他将无法对第 i+1 个标靶开火(无论第 i 个标靶是否命中)。过热状态只会持续一个标靶的间隔:即使跳过第 i+1 个标靶不开火,枪械也会在第 i+1 个标靶结束后自动冷却,后续的比赛不受影响。
枪手在面对每个标靶时可以自由选择开火或跳过。跳过时不会得分,也不会引起过热。
请你为枪手设计一个最优策略,最大化整个赛季命中次数的数学期望。
【约束】
第一行输入一个整数 n,表示标靶的数量。 接下来 n 行,每行包含两个实数 pi 和 qi,依次表示第 i 个标靶的命中概率和开火后过热的概率。
输出一个实数,表示能够达到的最大期望得分。答案的相对或绝对误差不超过 10−6 即可接受。
输入
1
0.8 0.3
输出
0.8000000000
说明
只有 1 场比赛,成功打铁的概率 p1=0.8,赛后禁赛的概率 q1=0.3。选择参加可获得期望打铁次数 0.8,选择不参加为 0。因此最大期望打铁次数为 0.8。
输入
2
0.9 1.0
0.5 0.5
输出
0.9000000000
说明
比赛场数 n=2。从后往前考虑:
输入
3
0.2 0.1
0.3 1.0
0.4 0.5
输出
0.6000000000
说明
n=3。从后往前动态规划:
输入
1
0.0 1.0
输出
0.0000000000
说明
唯一一场比赛成功打铁概率 p1=0,赛后禁赛概率 q1=1.0。无论是否参加,期望打铁次数均为 0。输出 0。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册