博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 3853 LOOPS(概率 dp 期望)
阅读量:6011 次
发布时间:2019-06-20

本文共 3073 字,大约阅读时间需要 10 分钟。

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 LOOPS is a rectangle of R*C grids. There is a portal in each grid except the exit grid. It costs Homura 2 magic power to use a portal once. The portal in a grid G(r, c) will send Homura to the grid below G (grid(r+1, c)), the grid on the right of G (grid(r, c+1)), or even G itself at respective probability (How evil the Boss Incubator is)!At the beginning Homura is in the top left corner of the LOOPS ((1, 1)), and the exit of the labyrinth is in the bottom right corner ((R, C)). Given the probability of transmissions of each portal, your task is help poor Homura calculate the EXPECT magic power she need to escape from the LOOPS.

 

 
Input
The first line contains two integers R and C (2 <= R, C <= 1000).The following R lines, each contains C*3 real numbers, at 2 decimal places. Every three numbers make a group. The first, second and third number of the cth group of line r represent the probability of transportation to grid (r, c), grid (r, c+1), grid (r+1, c) of the portal in grid (r, c) respectively. Two groups of numbers are separated by 4 spaces.It is ensured that the sum of three numbers in each group is 1, and the second numbers of the rightmost groups are 0 (as there are no grids on the right of them) while the third numbers of the downmost groups are 0 (as there are no grids below them).You may ignore the last three numbers of the input data. They are printed just for looking neat.The answer is ensured no greater than 1000000.Terminal at EOF

 

Output
A real number at 3 decimal places (round to), representing the expect magic power Homura need to escape from the LOOPS.

 

Sample Input
2 20.00 0.50 0.50    0.50 0.00 0.500.50 0.50 0.00    1.00 0.00 0.00

 

 

 

Sample Output
6.000

 

 

 

Source
 

 题意:有一个迷宫r行m列,开始点在[1,1]现在要走到[r,c] ,对于在点[x,y]可以打开一扇门走到[x+1,y]或者[x,y+1] ,消耗2点魔力 ,问平均消耗多少魔力能走到[r,c]

  1. 分析:假设dp[i][j]表示在点[i,j]到达[r,c]所需要消耗的平均魔力(期望) 
  2. 则从dp[i][j]可以到达: 
  3. dp[i][j],dp[i+1,j],dp[i][j+1]; 
  4. 对应概率分别为: 
  5. p1,p2,p3 
  6. 由E(aA+bB+cC...)=aEA+bEB+cEC+...//包含状态A,B,C的期望可以分解子期望求解  
  7. 得到dp[i][j]=p1*dp[i][j]+p2*dp[i+1][j]+p3*dp[i][j+1]+2;
1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 using namespace std; 9 #define N 100610 int n,m;11 double mp[N][N][6];12 double dp[N][N];13 int main()14 {15 while(scanf("%d%d",&n,&m)==2){16 for(int i=1;i<=n;i++){17 for(int j=1;j<=m;j++){18 for(int k=1;k<=3;k++){19 scanf("%lf",&mp[i][j][k]);20 }21 }22 }23 memset(dp,0,sizeof(dp));24 for(int i=n;i>=1;i--){25 for(int j=m;j>=1;j--){26 if(i==n && j==m) continue;//如果是在出口点,则期望值为0 27 if(mp[i][j][1]==1.0) continue;//该点无路可走,期望值肯定为0(dp[i][j]=0) 28 dp[i][j]=(dp[i][j+1]*mp[i][j][2]+dp[i+1][j]*mp[i][j][3]+2)/(1-mp[i][j][1]);29 }30 }31 printf("%.3lf\n",dp[1][1]);32 }33 return 0;34 }
View Code

 

转载地址:http://uurmx.baihongyu.com/

你可能感兴趣的文章
tomcat中web.xml各配置项的意义
查看>>
Linux下ftp+ssl实现ftps
查看>>
我的友情链接
查看>>
Java基础 - 第一章 计算
查看>>
CentOS7添加用户账户,授权
查看>>
金蝶kis记账王凭证过账要不要要审核
查看>>
Nodejs学习笔记(二):《node.js开发指南》代码中需要注意的几点
查看>>
Ztree异步加载自动展开节点
查看>>
反射操作公共成员变量
查看>>
我的友情链接
查看>>
端口基础常识大全+常用端口对照
查看>>
kettle界面语言修改成中文后,重启报错
查看>>
nagios安装完后插件里没有check_mysql的解决方法
查看>>
谷歌Chrome开展实验,解决HTTPS混合内容错误
查看>>
全球.COM域名注册量统计:2月增超29万域名
查看>>
11月微博博客日均覆盖数TOP10:网易博客升至第七
查看>>
6月28日全球域名注册商(国际域名)保有量及市场份额
查看>>
Android热修复升级探索——代码修复冷启动方案
查看>>
Dwz做前台页面,Jfinal后台使用前台下载excel【两种解决方案】
查看>>
Android 部分截图分享
查看>>