概率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 的任務。...