概率 亞瑟王

2021-10-24 16:23:55 字數 3468 閱讀 9419

題目描述

小 k 不慎被 ll 邪教**了,**程度深到他甚至想要從亞瑟王邪教中脫坑。他決定,在脫坑之前,最後再來打一盤亞瑟王。既然是最後一戰,就一定要打得漂亮。眾所周知,亞瑟王是乙個看臉的遊戲,技能的發動都是看概率的。

作為乙個非洲人,同時作為乙個前 oier,小 k 自然是希望最大化造成傷害的期望值。但他已經多年沒寫過**,連 spaly都敲不對了,因此,希望你能幫幫小 k,讓他感受一下當歐洲人是怎樣的體驗。

本題中我們將考慮遊戲的乙個簡化版模型。 玩家有一套卡牌,共 nn 張。遊戲時,玩家將 nn 張卡牌排列成某種順序,排列後將卡牌按從前往後依次編號為 1 - n1−n。本題中,順序已經確定,即為輸入的順序。每張卡牌都有乙個技能。第 ii 張卡牌的技能發動概率為 p_ipi​

,如果成功發動,則會對敵方造成 d_idi​

點傷害。也只有通過發動技能,卡牌才能對敵方造成傷害。基於現實因素以及小 k 非洲血統的考慮,p_ipi​

不會為 00,也不會為 11,即 0 < p_i < 10如果這張卡牌在這一局遊戲中已經發動過技能,則

1.1. 如果這張卡牌不是最後一張,則跳過之(考慮下一張卡牌); 否則(是最後一張),結束這一輪遊戲。

否則(這張卡牌在這一局遊戲中沒有發動過技能),設這張卡牌為第 ii 張

2.1. 將其以 p_ipi​

的概率發動技能。

2.2. 如果技能發動,則對敵方造成 d_idi​

點傷害,並結束這一輪。

2.3. 如果這張卡牌已經是最後一張(即 ii 等於 nn),則結束這一輪;否則,考慮下一張卡牌。

請幫助小 k 求出這一套卡牌在一局遊戲中能造成的傷害的期望值。

輸入格式

輸入檔案的第一行包含乙個整數 tt,代表測試資料組數。

接下來一共 tt 組資料。

每組資料的第一行包含兩個用空格分開的整數 nn 和 rr,分別代表卡牌的張數和遊戲的輪數。

接下來 nn 行,每行包含乙個實數和乙個整數,由空格隔開,描述一張卡牌。第ii 行的兩個數為 p_ipi​

和 d_idi​

,分別代表第 ii 張卡牌技能發動的概率(實數)和技能發動造成的傷害(整數)。保證 p_ipi​

最多包含 44 位小數,且為乙個合法的概率。

輸出格式

對於每組資料,輸出一行,包含乙個實數,為這套卡牌在這一局遊戲中造成的傷害的期望值。對於每一行輸出,只有當你的輸出和標準答案的相對誤差不超過 10^10

−8時——即 \frac \leq 10^

a∣a−o∣

​ ≤10

−8時(其中 aa 是標準答案, oo 是輸出),你的輸出才會被判為正確。建議輸出 1010 位小數。

輸入輸出樣例

輸入 #1複製

13 2

0.5000 2

0.3000 3

0.9000 1

輸出 #1複製

3.2660250000

說明/提示

一共有 1313 種可能的情況:

第一輪中,第 11 張卡牌發動技能;第二輪中,第 22 張卡牌發動技能;

概率為 0.150.15,傷害為 55。

第一輪中,第 11 張卡牌發動技能;第二輪中,第 33 張卡牌發動技能;

概率為 0.3150.315,傷害為 33。

第一輪中,第 11 張卡牌發動技能;第二輪不發動技能;

概率為 0.0350.035,傷害為 22。

第一輪中,第 22 張卡牌發動技能;第二輪中,第 11 張卡牌發動技能;

概率為 0.0750.075,傷害為 55。

第一輪中,第 22 張卡牌發動技能;第二輪中,第 33 張卡牌發動技能;

概率為 0.06750.0675,傷害為 44。

第一輪中,第 22 張卡牌發動技能;第二輪不發動技能;

概率為 0.00750.0075,傷害為 33。

第一輪中,第 33 張卡牌發動技能;第二輪中,第 11 張卡牌發動技能;

概率為 0.15750.1575,傷害為 33。

第一輪中,第 33 張卡牌發動技能;第二輪中,第 22 張卡牌發動技能;

概率為 0.047250.04725,傷害為 44。

第一輪中,第 33 張卡牌發動技能;第二輪不發動技能;

概率為 0.110250.11025,傷害為 11。

第一輪不發動技能;第二輪中,第 11 張卡牌發動技能;

概率為 0.01750.0175,傷害為 22。

第一輪不發動技能;第二輪中,第 22 張卡牌發動技能;

概率為 0.005250.00525,傷害為 33。

第一輪不發動技能;第二輪中,第 33 張卡牌發動技能;

概率為 0.0110250.011025,傷害為 11。

第一輪不發動技能;第二輪亦不發動技能;

概率為 0.0012250.001225,傷害為 00。

造成傷害的期望值為概率與對應傷害乘積之和,為 3.2660253.266025。

對於所有測試資料, 1 \leq t \leq 444, 1 \leq n \leq 220, 0 \leq r \leq 132, 0 < p_i < 1, 0 \leq d_i \leq 10001≤t≤444,1≤n≤220,0≤r≤132,0除非備註中有特殊說明,資料中 p_ipi​

與 d_idi​

均為隨機生成。

請注意可能存在的實數精度問題,並採取適當措施。

本題使用 special_judge。

設的狀態仍然要滿足 所有 情況都考慮在內 設f[i][j]表示對前i個技能進行了j輪遊戲造成的 概率 若有前i個技能進行了j則有j輪不會考慮第i+1個技能 即有r-j輪遊戲選擇了ii之後的技能 此時考慮第i+1個技能的情況,分為兩種

有p[i+1]r-j的概率i+1號技能從未發動

有1-p[i+1]r-j的概率i+1號技能發動過

然後轉移即可

#include

using

namespace std;

int n,r;

double f[

250]

[250];

double p[

250]

;int d[

250]

;double power[

250]

[250];

intmain()

double ans=0;

for(

int i=

0;i<=

240;i++

)for

(int j=

0;j<=

240;j++

)f[i]

[j]=0;

f[0][r]=1

;for

(int i=

1;i<=n;i++

) ans+

=s*d[i];}

printf

("%.10lf\n"

,ans);}

return0;

}

bzoj4008 亞瑟王 概率dp

重述題意 卡牌有發動概率和傷害,每張卡牌只發動一次,按順序遍歷,給出輪數,求傷害期望。神思路啊 我的腦子基本想不出來 如果說正面剛,剛一天也剛不掉,我們換個思路,用f i j 表示第i張卡被遍歷j次的概率。這個概率可以分為兩部分 1 第i 1張卡被遍歷j次且一直沒發動。這一段公式為f i 1 j 1...

HNOI2015 亞瑟王(概率dp)

題面太長了就不複製了,傳送門 一道做了還是很懵逼的題目,感覺以後碰到類似的還是不會,果然hnoi題目很皮。題解傳送 補充一下吧。感覺他的部落格已經寫得很好了.orz 需要的可以兩邊一起看 1.期望的線性性質 e x y e x e y x,y 是兩個不同的事件 e kx ke x k為常數 2.單獨...

BZOJ 4008 亞瑟王 概率DP 奧妙重重

題意 中文題面,就不解釋了 分析顯然這道題直接求期望太麻煩,想想轉化問題 這轉化太神了 定義f i,j f i,j 表示第i i張卡總共被經過j j次的概率,有轉移方程式f i,j f i 1,j 1 pi 1 j f i 1,j 1 1 1 pi 1 j 1 f i,j f i 1,j 1 pi ...