e[n][m] = 0;
三種運動的概率分別是a,b,c
e[i][j] = a*e[i][j] + b*e[i][j+1] + c*e[i+1][j]
->e[i][j] = ( b*e[i][j+1] + c*e[i+1][j] )/(1-a)
如果1-a近似到0,那麼說明只能到它本身,所以它不能到達終點,所以它的期望是無窮,也就是不能到達,要進行特判,賦值為0
#include #include #include #include #include #define max 1007
#define eps 1e-8
using namespace std;
double dp[max][max];
double p[max][max][4];
int n,m;
void dfs ( int x , int y )
if ( dp[x][y] > -0.5 ) return;
dp[x][y] = 2.0;
if ( y < m && dp[x][y+1] < -0.5 ) dfs ( x , y+1 );
dp[x][y] += dp[x][y+1]*p[x][y][2];
if ( x < n && dp[x+1][y] < -0.5 ) dfs ( x+1 , y );
dp[x][y] += dp[x+1][y]*p[x][y][3];
if ( fabs ( 1.0 - p[x][y][1] ) < eps ) dp[x][y] = 0.0;
else dp[x][y] /= ( 1.0 - p[x][y][1] );
}int main ( )
}
HDU 3853 期望概率DP
期望概率dp簡單題 從 1,1 點走到 r,c 點,每走一步的代價為2 給出每乙個點走相鄰位置的概率,共3中方向,不動 x,y x y p x y 0 右移 x y x y 1 p x y 1 左移 x y x 1 y p x y 2 問最後走到 r,c 的期望 dp i j 為從 i j 點走到 ...
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 ...
HDU 3853 向下向右找出口問題 期望dp
題意 初始狀態在 1,1 的位置,目標是走到 n,n 每次只能向下向右或者不移動,已知在每個格仔時這三種情況的概率,每移動一步消耗2的魔力,求走到終點的使用的魔力的期望。分析 簡單的期望dp,套用之前的框架,但是這題不是 1,而是 2,因為每次多加的那個數字是走一步的消耗,這裡是2!注意p1 i j...