HDU 3853LOOPS 簡單概率DP

2022-04-28 16:36:10 字數 1500 閱讀 8422

hdu 3853

loops

題目大意是說人現在在1,1,需要走到n,n,每次有p1的可能在元位置不變,p2的可能走到右邊一格,有p3的可能走到下面一格,問從起點走到終點的期望值

這是弱菜做的第一道概率dp的題,首先是看了一下有關概率dp的資料,大概知道一般球概率就是從起點推到終點,求期望就是從終點推到起點

考慮這題的做法,其實很簡單設dp[i][j]表示從i,j到達終點所需時間的期望值

dp[i][j] =p1 *  dp[i][j] + p2 * dp[i][j+1] + p3 * dp[i+1][j] + 1

最後需要+1是因為轉移到下一秒的狀態需要一秒,然後就愉快的ac了~~~

1

//#pragma comment(linker,"/stack:102400000,102400000")

2 #include 3 #include

4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15

using

namespace

std;

16#define inf 1e9

17#define inf (-((ll)1<<40))

18#define lson k<<1, l, mid

19#define rson k<<1|1, mid+1, r

20#define mem0(a) memset(a,0,sizeof(a))

21#define mem1(a) memset(a,-1,sizeof(a))

22#define mem(a, b) memset(a, b, sizeof(a))

23#define fopenin(in) freopen(in, "r", stdin)

24#define fopenout(out) freopen(out, "w", stdout)

2526

//typedef __int64 ll;

27//

typedef long long ll;

28const

int maxn = 1005;29

const

int maxm = 100005;30

const

double eps = 1e-13;31

//const ll mod = 1000000007;

3233

double

p1[maxn][maxn], p2[maxn][maxn], p3[maxn][maxn], dp[maxn][maxn];

3435

intmain()

3651 printf("

%.3lf\n

", dp[1][1

]);52}53

return0;

54 }

HDU3853 LOOPS簡單期望

這題還算比較簡單的,不過有個位置有個小坑需要注意,不然狂wa不止 hdu3853傳送門 乙個r c的迷宮,你一開始在左上角 1,1 處,出口在右下角 r,c 處。你可以進行移動操作,每一次操作將會消耗2魔法值。每一次操作你都有機率向下,向右移動,或者停留在原地。問走出迷宮期望消耗的魔法值。多組資料,...

簡單概率dp 期望 hdu 3853 LOOPS

題目大意 給乙個r c的矩陣,每個格仔 x,y 用2魔法值就可以走一步,可以到 x,y x 1,y x,y 1 告訴每個格仔的能到達的三個位置的概率,求從左上角到達右下角所需魔法值的期望。解題思路 簡單期望dp.dp i j 表示從位置 i,j 到達終點的期望,則dp i j 2 dp i j sa...

hdu 3853 LOOPS(不錯的入門經典)

題意 給出乙個r c的迷宮,每個格仔可以走到 r,c r 1,c r,c 1 概率分別為p1 p2 p3 沒走一次消耗2各單位的能量,問從 1,1 走到 r,c 的平均能量 解析 設dp i j 表示 i,j 到 r,c 需要消耗的能量 則 dp i j p1 i j dp i j p2 i j d...