題目大意:有乙個吸血鬼,初始攻擊力為f,每天隨機走到n個洞裡面,每個洞有乙個c[i],如果他的攻擊力f>c[i]
則可以花費t[i] 的時間逃走,否則則花費一天時間使自己的攻擊力增加c[i],求逃走天數的期望
分析:這道題求期望,,考慮採用概率dp求解
想到的最簡單方法就是dp[i][j]表示 第i天,攻擊力為j的概率,然後對每乙個c進行轉移,最後統計答案
但是發現i,j的範圍都是10000,n是100 這麼做顯然是行不通的
於是又可恥的搜了一下題解,發現有乙個博主寫的期望dp這個概念很不錯
令 dp[a]表示 攻擊力為 a 後 還需要多少天逃出的期望,那麼dp[f]即為答案
注意關鍵是這個 「還」
狀態轉移:
如果 a>c[i] 那麼顯然還需要 t[i]時間逃出
如果 a<=c[i] 那麼先要花費一天把攻擊力增加a+c[i],然後還要花費的時間就是 dp[a+c[i]]
這樣轉移方程就很好寫了
由於需要從後往前轉移,採用記憶化搜尋寫
開始陣列開10010 老是segment fault 後來開到10w過了。。
**:
#include #include#include
#include
#include
#include
#include
#pragma comment(linker, "/stack:102400000,102400000")
using
namespace
std;
intn,f;
double
p;double dp[100010
];int c[1110
];bool vi[100010
];double dfs(int
a)
return
dp[a];
}int
main()
memset(dp,
0,sizeof
(dp));
memset(vi,
0,sizeof
(vi));
p=(1.0+sqrt(5.0))/2.0
; printf(
"%.3f\n
",dfs(f));
}return0;
}
期望概率 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...
(概率dp 期望)Collecting Bugs
題目是真的長,找了半天才知道n和s是啥,題意就是有s個程式,n種bug 每一天必定發現乙個bug,但是這個bug有1 s概率屬於其中乙個程式,1 n的概率屬於一種bug,求s個程式要發現n種bug的概率。kuangbin大佬部落格 期望從結果倒著推到初始狀態 dp i j i n s dp i j ...
概率dp 期望)LOOPS
題意為位於乙個迷宮,剛開始在左上角 1,1 每個格仔都有p1的概率留在原地,p2的概率向右移動乙個,p3的概率向下移動一格,但都要花費2點魔力值。求到右下角 r,c 的花費魔力值期望 dp i j p1 dp i j p2 dp i j 1 p3 dp i 1 j 2 注意有的格仔p1為1的時候,這...