题意:就是让你从(1,1)走到(r, c)而且每走一格要花2的能量,有三种走法:1,停住。2,向下走一格。3,向右走一格。问在一个网格中所花的期望值。

首先:先把推导动态规划的基本步骤给出来。

·  1.设变量:(注意:设置变量时,要能够使整个求解过程可以分为多个阶段。)

   2.分析阶段决策,并写出决策函数。(也就是能体现前阶段决策后阶段关系的函数)

   3.写出指标函数。(也是就是我们得出解的函数。)

先第一步:设置变量,我们分析这个题的是从(1,1)到(r, c)那么什么能体现“阶段”这个词的东西呢?

     十分明显,那就是步数(把停下也看做一步)啊;那么来具体分析一下。假设:我们走到(x,y)那么他的上一阶段是不是有三种可能,那么这三种上一阶,是不是由上上一阶的决策所决定的。是不是这样就把分层分阶段给划出来了。那么我们就设dp[i][j]  表示走到(x,y)时的期望值,最重要的是i,j的意义。

然后第二步:(分析决策函数)

设Sk便是第k阶段. 设决策为Pk

则S1={(1,1),(2,1),(1,2);则,那么Pk就在S1中决策,我们这道题的决策P1=P01+P02+P0<=>dp[1][1]=dp[1][1]+dp[2][1]+dp[1][2](我只是想更好的让大家理解这个决策)。好了,这个决策函数就写好了

最后第三步:(分析指标函数)

设Vk为指标函数。当然,一般有最值等等类型。我还是回到原题。假设走到(x, y)那么这前部的期望值是由决策函数来决策的。

回到决策函数:Pk=P(k-1)1+P(k-1)2+P(k-1)3  (设h1,h2, h3分别是对应的概率) 那么Vk=(h1*P(k-1)1+h2*P(k-1)2+h3*P(k-1)3+2)

好了,其实指标函数就是动态规划方程式了, dp[i][j]=(p[i][j][0]*dp[i][j]+p[i][j][1]*dp[i][j+1]+p[i][j][2]*dp[i+1][j]+2)  ===>

  dp[i][j]=(p[i][j][1]*dp[i][j+1]+p[i][j][2]*dp[i+1][j]+2)/(1-p[i][j][0]);

ac代码:

#include<cstring>
#include<cstdio>
#define maxn int(1e3+2) double dp[maxn][maxn], p[maxn][maxn][]; int main(){
int r, c;
while (scanf("%d%d", &r, &c) != EOF){
for (int i = ; i <= r;++i)
for (int j = ; j <= c;++j)
for (int k = ; k < ; ++k)
scanf("%lf", &p[i][j][k]);
dp[r][c] = ;
for (int i = r; i>; --i)
for (int j = c; j > ;--j)
if (p[i][j][] == ||i==r&&j==c)continue;
else {
dp[i][j] = (p[i][j][] * dp[i][j + ] + p[i][j][] * dp[i + ][j] + ) / ( - p[i][j][]);
}
printf("%.3lf\n", dp[][]);
}
}

LOOPS HDU - 3853 (概率dp):(希望通过该文章梳理自己的式子推导)的更多相关文章

  1. hdu 3853 概率dp

    题意:在一个R*C的迷宫里,一个人在最左上角,出口在右下角,在每个格子上,该人有几率向下,向右或者不动,求到出口的期望 现在对概率dp有了更清楚的认识了 设dp[i][j]表示(i,j)到(R,C)需 ...

  2. LOOPS(HDU 3853)

    LOOPS Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 125536/65536 K (Java/Others)Total Sub ...

  3. AC日记——LOOPS hdu 3853

    3853 思路: 概率dp求期望: 代码: #include <cstdio> #include <cstring> #include <iostream> usi ...

  4. HDU 4599 概率DP

    先推出F(n)的公式: 设dp[i]为已经投出连续i个相同的点数平均还要都多少次才能到达目标状态. 则有递推式dp[i] = 1/6*(1+dp[i+1]) + 5/6*(1+dp[1]).考虑当前这 ...

  5. HDU 5001 概率DP || 记忆化搜索

    2014 ACM/ICPC Asia Regional Anshan Online 给N个点,M条边组成的图,每一步能够从一个点走到相邻任一点,概率同样,问D步后没走到过每一个点的概率 概率DP  測 ...

  6. HDU 4815 概率dp,背包

    Little Tiger vs. Deep Monkey Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K ( ...

  7. hdu 4050(概率dp)

    算是挺简单的一道概率dp了,如果做了前面的聪聪于可可的话,这题不需要什么预处理,直接概率dp就行了... #include <stdio.h> #include <stdlib.h& ...

  8. HDU 4405 (概率DP)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4405 题目大意:飞行棋.如果格子不是飞行点,扔骰子前进.否则直接飞到目标点.每个格子是唯一的飞行起点 ...

  9. hdu 3853LOOPS (概率DP)

    LOOPS Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 125536/65536 K (Java/Others) Total Su ...

随机推荐

  1. 记一次IDEA编译器调优

    前言: 我们知道,IDEA是用Java写的,那么他肯定也存在虚拟机的调优的问题,那么今天我们就对它进行开刀. 下面是默认参数 位置在:C:\Program Files\JetBrains\Intell ...

  2. hadoop fs,hadoop dfs,hdfs dfs

    hadoop fs: FS relates to a generic file system which can point to any file systems like local, HDFS ...

  3. Ocelot中文文档-Configuration

    配置 一个关于Ocelot配置例子在这里.配置有两个部分.一个数组类型的ReRoutes和一个全局配置.ReRoutes是个对象,告诉Ocelot怎么去处理一个上游请求.全局配置有点繁琐(is a h ...

  4. 【开发工具之eclipse】8、The word is not correctly spelled。强迫症看着很难受

    eclipse出现了极其让我郁闷的错误,"The word is not correctly spelled" 我讨教过一些朋友以后,还是没有得到答案,我就纳闷了.然后我继续将代码 ...

  5. jsp-servlet 的相关请求路径问题 —url

    jsp-servlet 的相关请求路径问题  —url 本文章主要解决的几方面问题如下: 常见涉及路径元素: jsp页面请求和servlet请求转发.重定向的关系 如何避免下一步请求受上一步请求在UR ...

  6. Pseudocode MD5 CODE

    //Note: All variables are unsigned 32 bit and wrap modulo 2^32 when calculating var int[64] s, K //s ...

  7. canvas-star6-drawMoon.html

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 使用 ISO镜像配置 本地yum 源(RHEL, CentOS, Fedora等适用)

    使用 ISO镜像配置 本地yum 源(RHEL, CentOS, Fedora等适用)   1.上传ISO镜像和挂载 1) 上传Centos7.2 ISO镜像到 /usr/local/src目录 2) ...

  9. IOS7如何获取设备唯一标识

    WWDC 2013已经闭幕,IOS7 Beta随即发布,界面之难看无以言表...,简直就是山寨Android. 更让IOS程序猿悲催的是,设备唯一标识的MAC Address在IOS7中也失效了. I ...

  10. 安卓开发_深入理解Content Provider

    一.Content Provider概述 Content Provider用于保存和获取数据,并使其对所有应用程序可见,这是不同应用程序之间共享数据的唯一方式,因为在Android中没有提供所有应用可 ...