概率dp入門

2021-09-06 22:19:20 字數 1783 閱讀 3365

概率dp主要用於求解期望、概率等題目。

轉移方程有時候比較靈活。

一般求概率是正推,求期望是逆推。通過題目可以體會到這點。

poj2096:collecting bugs

#include #include 

#include

#include

#include

typedef

long

long

ll;using

namespace

std;

#define mod 1000000007

double dp[1010][1010

];int

n,s;

intmain()

}printf(

"%.4f\n

",dp[0][0

]); }

return0;

}//

sdut2626題目: the number of steps

#include #include 

#include

#include

#include

typedef

long

long

ll;using

namespace

std;

#define mod 1000000007

intn;

double dp[110][110

];double

a,b,c,d,e;

intmain()

for(int i=n-1;i>=1;i--)

else}}

printf(

"%.2lf\n

",dp[1][1

]); }

return0;

}

hdu4405:

題目大意:

跳棋有0~n個格仔,每個格仔x可以搖一次色子,色子有六面p(1=

解題思路:

dp[i]表示從i出發到達最終位置的次數期望。

轉移方程當i需要搖色子時,dp[i]=σ(1+dp[i+j])(1<=j<=6);否則dp[i]=dp[jump[i]] 表示從i能夠跳得到的最大位置。

預處理後面的6個位置,直接轉移就行。

#include #include 

#include

#include

#include

#include

#include

#include

#define inf 0x3f3f3f3ftypedef

long

long

ll;using

namespace

std;

intn,m;

int path[100010

];double dp[100010

];int

main()

for(int i=n;i>=1;i--)

}for(int i=0;i<6;i++)

dp[n+i]=0

;

for(int i=n-1;i>=0;i--)

dp[i]=1+tt;}}

printf(

"%.4f\n

",dp[0

]); }

return0;

}

poj2096 概率dp入門

題意 乙個系統有s個子系統,一共會產生n中bug。某人一天可以發現乙個bug,這個bug屬於乙個子系統,屬於乙個種類,每個bug屬於某個子系統的概率是1 s,屬於某個分類的概率是1 n,問發現n種bug並且每個子系統都發現bug的天數的期望。分析 簡單的入門概率dp,在這之前沒有做個這個型別,所以講...

hdu 3853 概率dp入門

題意 在一塊r c的棋盤上,從位置 1,1 的地方走到位置為 r,c 的地方,每走一步的代價為2,在位置 i,j 可能會走到位置 i 1,j i,j 1 以及 i,j 題目中給出每個點走向下乙個方向的概率,求花的總代價。分析 一道很基礎的概率dp,dp i j 表示的是從位置 i,j 走到 r,c ...

概率期望dp入門題 遊戲

題目 alice 和 bob 兩個人正在玩乙個遊戲,遊戲有很多種任務,難度為 p 的任務 p是正整數 有 1 2 p 的概率完成並得到 2 p 1 分,如果完成不了,得 0 分。一開始每人都是 0 分,從 alice 開始輪流做任務,她可以選擇任意乙個任務來做 而 bob 只會做難度為 1 的任務。...