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...