hdu 3853 写傻了的期望dp,不能正推?!!

//下面是错误代码...

 1 #include "iostream"
 2 #include "cstdio"
 3 #include "cstring"
 4 #include "algorithm"
 5 #include "cmath"
 6 using namespace std;
 7 const double eps = 1e-5;
 8 double dp[1010][1010];
 9 int R, C;
10 double p[1010][1010][3];
11 bool cant[1010][1010];
12
13 int main()
14 {
15     int i, j, k;
16     while(scanf("%d%d", &R, &C)!=EOF) {
17         memset(dp, 0, sizeof(dp));
18         memset(cant, 0, sizeof(cant));
19         for(i = 1; i <= R; ++i) {
20             for(j = 1; j <= C; ++j) {
21                 scanf("%lf%lf%lf", &p[i][j][0], &p[i][j][1], &p[i][j][2]);
22                 if(fabs(p[i][j][0] - 1.0) > eps) {
23                     dp[i][j] = (dp[i][j - 1] + 2) * p[i][j - 1][1] + (dp[i - 1][j] + 2) * p[i - 1][j][2] + 2 * p[i][j][0];
24                     dp[i][j] /= (1 - p[i][j][0]);
25                     if(j==1)
26                         cant[i][j - 1] = 1;
27                     if(i==1)
28                         cant[i - 1][j] = 1;
29
30                     if(cant[i][j - 1] && cant[i - 1][j] && (i != 1 || j != 1))
31                         cant[i][j] = 1, dp[i][j] = 0;
32                 }
33                 else
34                     cant[i][j] = 1, dp[i][j] = 0;
35                 //printf("%d %d dp[%d][%d] == %f\n",cant[i][j - 1], cant[i - 1][j], i, j, dp[i][j]);
36             }
37         }
38         dp[R][C] = 0;
39         if(!cant[R][C - 1])
40             dp[R][C] += (dp[R][C - 1] + 2) * p[R][C - 1][1];
41         if(!cant[R - 1][C])
42             dp[R][C] += (dp[R - 1][C] + 2) * p[R - 1][C][2];
43         printf("%.3f\n", dp[R][C]);
44     }
45 }
时间: 2024-08-27 17:08:44

hdu 3853 写傻了的期望dp,不能正推?!!的相关文章

浅谈期望dp

今天解决了一直以来的一个疑问: 为什么期望dp需要倒推? 参考:传送门 例题:传送门 每个格子可以向左右或向下或原地不动. 假如正序推式子: 且dp设置成从(x,y)到(i,j)的期望值,那么: 当前状态的值将由这四个位置的状态值得到,那么概率怎么求??? 这四个位置到当前状态的概率可不是1/4... 那么对应的期望也不是很好办. 期望,状态设置应保证已知最终状态如何表示. 我们这里将f[i][j]表示为从(i,j)到最后一行的状态,这样最终答案也确定为f[x][y]. 继续看转移: 从当前点向

HDU 3853 LOOPS:期望dp【网格型】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3853 题意: 有一个n*m的网格. 给出在每个格子时:留在原地.向右走一格,向下走一格的概率. 每走一格会消耗2点体力. 问你从(1,1)到达终点(n,m)消耗体力的期望. 题解: 表示状态: dp[i][j] = rest steps(剩余路程花费体力的期望) i,j:现在的位置 找出答案: ans = dp[0][0] 如何转移: 期望dp的套路:考虑子期望... now: dp[i][j] 能

HDU 3853 向下向右找出口问题-期望dp

题意:初始状态在(1,1)的位置,目标是走到(n,n),每次只能向下向右或者不移动,已知在每个格子时这三种情况的概率,每移动一步消耗2的魔力,求走到终点的使用的魔力的期望. 分析:简单的期望dp,套用之前的框架,但是这题不是+1,而是+2,因为每次多加的那个数字是走一步的消耗,这里是2!注意p1[i][j]==1时不能计算dp[i][j],看式子就知道了,分母不能为0. 代码: #include<iostream> #include<cstdio> using namespace

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]点走到[r][c]的期望 有方程: dp[i][j]=    (dp[i][j]+2)*p[i][j][0]  +   (dp

概率dp HDU 3853

H - LOOPS Time Limit:5000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 3853 Appoint description:  System Crawler  (2014-10-22) Description Akemi Homura is a Mahou Shoujo (Puella Magi/Magical Girl). Homura wa

hdu 3853 概率DP 简单

http://acm.hdu.edu.cn/showproblem.php?pid=3853 题意:有R*C个格子,一个家伙要从(0,0)走到(R-1,C-1) 每次只有三次方向,分别是不动,向下,向右,告诉你这三个方向的概率,以及每走一步需要耗费两个能量,问你走到终点所需要耗费能量的数学期望: 回头再推次,思想跟以前的做过的类似 注意点:分母为0的处理 #include <cstdio> #include <cstring> #include <algorithm>

HDU 3853 概率dp

LOOPS Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 125536/65536 K (Java/Others) Total Submission(s): 2337    Accepted Submission(s): 951 Problem Description Akemi Homura is a Mahou Shoujo (Puella Magi/Magical Girl).Homura wants to help he

hdu 4035 Maze(比较经典的树形期望DP)

Maze Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others) Total Submission(s): 1677    Accepted Submission(s): 638 Special Judge Problem Description When wake up, lxhgww find himself in a huge maze. The maze consisted b

[ACM] hdu 3853 LOOPS (概率DP,递推)

LOOPS Problem Description Akemi Homura is a Mahou Shoujo (Puella Magi/Magical Girl). Homura wants to help her friend Madoka save the world. But because of the plot of the Boss Incubator, she is trapped in a labyrinth called LOOPS. The planform of the