hdu 3853 LOOPS(基础DP求期望)
题目大意
有一个人被困在一个 R*C(2<=R,C<=1000) 的迷宫中,起初他在 (1,1) 这个点,迷宫的出口是 (R,C)。在迷宫的每一个格子中,他能花费 2 个魔法值开启传送通道。假设他在 (x,y) 这个格子中,开启传送通道之后,有 p_lift[i][j] 的概率被送到 (x,y+1),有 p_down[i][j] 的概率被送到 (x+1,y),有 p_loop[i][j] 的概率被送到 (x,y)。问他到出口需要花费的魔法值的期望是多少。
做法分析
令:f[i][j] 表示从 (i,j) 这个点到下一点花费的魔法值的期望。
那么,我们有:
f[i][j] = 2+p_loop[i][j]*f[i][j] + p_left[i][j]*f[i][j+1] + p_down[i][j]*f[i+1][j]
移项可得:
(1-p_loop[i][j])*f[i][j] = 2+p_left[i][j](f[i][j+1] + p_down[i][j]*f[i+1][j]
#include<stdio.h>
#include<math.h>
#include<string.h>
double p[][][];
double f[][];
bool vs[][];
int R,C;
double DP(int x,int y)
{
if(x==R&&y==C)return ;
if(x>R||y>C)return ;
if(vs[x][y])return f[x][y];
if(fabs(p[][x][y]-)<1e-)
{
vs[x][y]=;
return f[x][y]=;
}
vs[x][y]=;
return f[x][y]=(+p[][x][y]*DP(x,y+)+p[][x][y]*DP(x+,y))/(-p[][x][y]);
}
int main()
{
while(scanf("%d%d",&R,&C)!=EOF)
{
for(int i=;i<=R;i++)
for(int j=;j<=C;j++)
scanf("%lf%lf%lf",&p[][i][j],&p[][i][j],&p[][i][j]);
memset(f,,sizeof(f));
memset(vs,,sizeof(vs));
printf("%.3lf\n",DP(,));
}
}
hdu 3853 LOOPS(基础DP求期望)的更多相关文章
- HDU 3853 LOOP (概率DP求期望)
D - LOOPS Time Limit:5000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit St ...
- hdu 3853 LOOPS (概率dp 逆推求期望)
题目链接 LOOPS Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 125536/65536 K (Java/Others)Tota ...
- HDU 3853 LOOPS 概率DP入门
LOOPS Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 125536/65536 K (Java/Others)Total Sub ...
- hdu 3853 LOOPS 概率DP
简单的概率DP入门题 代码如下: #include<iostream> #include<stdio.h> #include<algorithm> #include ...
- HDU 3853 LOOPS 可能性dp(水
在拐~ #include <stdio.h> #include <cstring> #include <iostream> #include <map> ...
- HDU3853-LOOPS(概率DP求期望)
LOOPS Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 125536/65536 K (Java/Others) Total Su ...
- Poj 2096 (dp求期望 入门)
/ dp求期望的题. 题意:一个软件有s个子系统,会产生n种bug. 某人一天发现一个bug,这个bug属于某种bug,发生在某个子系统中. 求找到所有的n种bug,且每个子系统都找到bug,这样所要 ...
- hdu4035 Maze (树上dp求期望)
dp求期望的题. 题意: 有n个房间,由n-1条隧道连通起来,实际上就形成了一棵树, 从结点1出发,开始走,在每个结点i都有3种可能: 1.被杀死,回到结点1处(概率为ki) 2.找到出口,走出迷宫 ...
- POJ2096 Collecting Bugs(概率DP,求期望)
Collecting Bugs Ivan is fond of collecting. Unlike other people who collect post stamps, coins or ot ...
随机推荐
- Java中的访问权限
Java中有四种访问权限,从大到小依次是:public –> protected –> default(friendly) –> private. 简单说明下: public 作用域 ...
- 在线演示平台 | Highcharts中文网 (曲线图、区域图、3D图等等)
http://www.hcharts.cn/ 在线演示平台 | Highcharts中文网
- 第2章 HelloWorld
----------------------------------------- 2-2 在设置应用图标的时候,一定要注意添加的图片一定是.ico 的要求格式(32*32像素). 可以在网上下载 ...
- P1179: [Apio2009]Atm
缩点+spfa最短路,因为最终不可能有环,所以直接spfa. ; type node=record f,t:longint; end; var n,m,s,i,j,ans,cnt,num,u,x,dg ...
- My mac cannot run 类相关的操作 , which is lower than 类相关的操作。
首先你选择的项目是mac项目, 其次,你MAC的系统版本小于你当前项目部署环境的最低支持版本 要么升级你的MAC系统,要么再project—>target设置developerme ...
- jta.properties transactions.properties Log already in use 解决方法
当在resin里跑多个含有atomikos控制事物的项目时,会报错,Log already in use. 解决方法: 加jta.properties或者transactions.properties ...
- Netsharp快速入门(之10) 销售管理(插件、资源、业务建模)
作者:秋时 杨昶 时间:2014-02-15 转载须说明出处 第4章 销售模块开发 4.1 创建插件和资源 参考基础档案的开发 4.2 创建业务模型 Netsharp工具 ...
- 使用Java 8 Lambda表达式对Employee类进行操作
1,首先定义Employee类. package coffee.how.to.program.early.objects.chapter15; public class Employee { priv ...
- 仿百度搜索(AJAX)
<h1>百度搜索</h1><!--建立一个DIV,其中包括一个文本输入框和一个按钮--><div id="sousuo"> < ...
- PHP中如何连接数据库基本语句
只是后端修改页面,不需要在前端显示的可以删除原有代码只输入<?php 开始编写语言即可,后面的?>也可以省略 //造一个连接$connect = @mysql_connect(" ...