題目
alice 和 bob 兩個人正在玩乙個遊戲,遊戲有很多種任務,難度為 p 的任務(p是正整數),有 1/(2^p) 的概率完成並得到 2^(p-1) 分,如果完成不了,得 0 分。一開始每人都是 0 分,從 alice 開始輪流做任務,她可以選擇任意乙個任務來做;而 bob 只會做難度為 1 的任務。只要其中有乙個人達到 n 分,即算作那個人勝利。求 alice 採取最優策略的情況下獲勝的概率。我們選擇倒推(感覺好多期望概率dp都要倒推啊)輸入格式
乙個正整數 n ,含義如題目所述。
輸出格式
乙個數,表示 alice 獲勝的概率,保留 6 位小數。
樣例資料 1
輸入 1
輸出 0.666667
備註 【資料範圍】
對於 30% 的資料,n≤10
對於 100% 的資料,n≤500
用a[i][j]表示alice有i分bob有j分時alice的獲勝概率
那麼就有4種可能
alice完成,bob未完成;alice未完成,bob完成;兩人都完成;兩人都未完成;
可以得到遞推式a[
i][j
]=ma
x((a
[l][
j]/k
/4+a
[l][
j+1]
/k/4
+a[i
][j+
1]∗(
k∗2−
1)/k
/4)/
(1.0
−1.0∗(
k∗2−
1.0)/k
/4)|
0<=
i<=n−
1;0<=
j<=n−
1)' role="presentation" style="position: relative">a[i
][j]
=max
((a[
l][j
]/k/
4+a[
l][j
+1]/
k/4+
a[i]
[j+1
]∗(k
∗2−1
)/k/
4)/(
1.0−
1.0∗(k
∗2−1.0)/
k/4)
|0<=
i<=n−
1;0<=
j<=n−
1)a[
i][j
]=ma
x((a
[l][
j]/k
/4+a
[l][
j+1]
/k/4
+a[i
][j+
1]∗(
k∗2−
1)/k
/4)/
(1.0
−1.0∗(
k∗2−
1.0)/k
/4)|
0<=
i<=n−
1;0<=
j<=n−
1)其中l=
k+i' role="presentation" style="text-align: center; position: relative">l=k
+il=
k+ik
=1;k
/2<=n;
k<<=
1' role="presentation" style="text-align: center; position: relative">k=1
;k/2
<=n;
k<<=1
k=1;
k/2<=n;
k<<=
1k是列舉alice選擇不同任務贏後的分數
**
#include
using
namespace
std;
double a[505][505];
int n;
int main()
a[i][j]=maxn;
}printf("%lf",a[0][0]);
}
概率DP 期望雜題
1.f i j 前i個人,有j個人正常出局的概率 f i j f i 1 j p1 f i 1 j 1 p2 留下來 被日死 正常出局 p 別人出局後自己被日死的概率 p2 1 p j 1 p1 1 p1 f i k p2 前k個過後都沒有被日死 最後再 inv 1 n 這一輪出局概率 includ...
學習筆記 期望DP題單 概率,期望DP
目錄貳 典例營 做過很多期望的題了,但是一直沒有系統地學習過期望,這幾天終於有時間攻堅這個重要但是對我而言難得一匹的問題了.實際上我 dp 也菜得一匹。傳送門 to oi wiki 一般我們使用 p x 表示 x 發生的概率,e x 表示 x 發生的期望。我們有兩者的關係 e x sum p x i...
期望概率 dp
p4316 綠豆蛙的歸宿 p1850 noip2016 提高組 換教室 p3802 小魔女帕琪 p5104 紅包發紅包 p4550 收集郵票 f i frac f i 1 frac f 1 g i frac g i f i 1 frac g f 1 p1291 shoi2002 百事世界盃之旅 p3...