題面太長了就不複製了,傳送門
一道做了還是很懵逼的題目,感覺以後碰到類似的還是不會,果然hnoi題目很皮。
題解傳送
補充一下吧。//感覺他的部落格已經寫得很好了......orz 需要的可以兩邊一起看
1.期望的線性性質 \(e(x+y)=e(x)+e(y)\) //\(x,y\)是兩個不同的事件
\(e(kx)=ke(x)\) //(k為常數)
2.單獨考慮每張牌的概率的時候,影響其的只有他前面選了幾張。
例如在前\(j\)輪裡,在牌\(i\)(假設\(i>j\))前面有\(k\)張牌發動了(不包括\(i\))。
若\(k,意味著還有牌在包括\(i\)的後面發動了,這時是不是我們考慮了\(i\)是否發動,所以會有概率做貢獻
若\(k==j\),意味著j輪內發動的牌都在\(i\)前面,依題意,我們不會考慮\(i\)是否發動,所以不會有概率做貢獻
大家盡量yy一下,語言表達能力有限
3.補充一下這裡吧,自己看的時候感覺寫的不是很清楚:
\(f[i][j]\)表示在所有\(r\)輪中,前\(i\)張卡一共出了\(j\)張的概率,那麼就可以用\(o(n)\)的時間算出\(fp[i](i>0)\)
列舉前\(i-1\)輪選了\(j\)張牌,那麼有\(j\)輪不會考慮到第\(i\)張牌,也就是有\(r-j\)輪會考慮到第\(i\)張牌
//根據狀態的定義,我們選了\(j\)張牌是不是意味著我們已經進行了\(j\)輪了,這時\(f[i-1][j]\)就意味著
在前\(i-1\)張牌中我們有\(j\)張發動了,根據題目條件,一旦發動回合結束,即前\(j\)輪根本就沒機會來到第\(i\)張牌,所以剩下的\(r-j\)輪就會考慮到\(i\),會對\(fp[i]\)做出貢獻。
#include#include#include#include#include#includeusing namespace std;
double p[221],f[221][133],all[221];
int d[221];
int main()
f[0][0]=1;
for(int i=1;i<=n;i++)
}double ans=0;
for(int i=1;i<=n;i++)
printf("%.10lf\n",ans);
}}
HNOI2015 亞瑟王 期望DP
也許更好的閱讀體驗 mathcal 給出 n 個技能,每個技能按輸入順序有 p i 的概率釋放並造成 d i 的傷害。每輪遊戲從前往後順序檢視每個技能,若技能發動過則跳過,沒發動過則以 p i 的技能發動,即每個技能只能發動一次,若將乙個技能發動,則進行下一輪遊戲,沒有成功發動或被跳過就檢視下乙個技...
HNOI2015 期望dp 亞瑟王
描述 小 k 不慎被 ll 邪教 了,程度深到他甚至想要從亞瑟王邪教中脫坑。他決定,在脫坑之前,最後再來打一盤亞瑟王。既然是最後一戰,就一定要打得漂 亮。眾所周知,亞瑟王是乙個看臉的遊戲,技能的發動都是看概率的。作為乙個非 洲人,同時作為乙個前 oier,小 k 自然是希望最大化造成傷害的期望值。但...
概率 亞瑟王
題目描述 小 k 不慎被 ll 邪教 了,程度深到他甚至想要從亞瑟王邪教中脫坑。他決定,在脫坑之前,最後再來打一盤亞瑟王。既然是最後一戰,就一定要打得漂亮。眾所周知,亞瑟王是乙個看臉的遊戲,技能的發動都是看概率的。作為乙個非洲人,同時作為乙個前 oier,小 k 自然是希望最大化造成傷害的期望值。但...