一道有思维难度的期望 DP。
根据期望的线性性,可以算出每张牌发动的概率然后乘伤害最后加起来。
设 fi 表示第 i 张牌发动的概率。
首先有 f1=(1−(1−p1)r)。
我们发现一张牌发动的概率跟之前已经发动了几张牌有关。
所以可以设 gi,j 表示前 i 张牌,总共发动了 j 张(第 i 张不一定发动)。
转移,只需要考虑第 i 张牌是否发动即可。
有 fi,j=(1−(1−ai)r−j+1)fi−1,j−1+(1−ai)r−jfi−1,j
第一项对应发动,第二项对应不发动。
然后要预处理所有 (1−ai)j,并且特判 r=0 的情况。
代码:
1 |
|