hdu 3853 LOOPS
来源:互联网 发布:天猫跟淘宝是什么关系 编辑:程序博客网 时间:2024/05/22 02:29
题目大意:给一个R * C的格子,每个格子(i,j)到达(i,j)、(i,j+1)、(i+1,j)的概率分别为p1,p2,p3(p1+p2 +p3 = 1),每走一个格子需要花费的魔力为2,求从(1,1)走到(R,C)所需要魔力的期望。
解题思路:果然是个大水题啊~~ 很容易退出状态转移方程,不过有个小trick,就是当格子(i,j)的p1=1,即格子只能留在当前的格子处时,dp[i][j] = 0; 其他 dp[i][j] = ( p[i][j][2] * dp[i][j+1] + p[i][j][3] * dp[i+1][j] + 2) / (1- p[i][j][1])。
代码如下:
#include <cstdio>#include <cstring>#include <cmath>#include <cstdlib>#define N 1024double dp[N][N];double p[N][N][4];int main(){ int r, c; while(~scanf("%d %d", &r, &c)) { for(int i = 1; i <= r; i ++) { for(int j = 1; j <= c; j ++) { scanf("%lf %lf %lf", &p[i][j][1], &p[i][j][2], &p[i][j][3]); } } memset(dp, 0, sizeof(dp)); dp[r][c] = 0; for(int i = r; i >= 1; i --) { for(int j = c; j >= 1; j --) { if(i == r && j == c) continue; if(p[i][j][1] == 1) { dp[i][j] = 0; continue; } dp[i][j] = (p[i][j][2]* dp[i][j+1] + p[i][j][3] * dp[i+1][j] + 2)/ (1 - p[i][j][1]); } } printf("%.3lf\n", dp[1][1]); } return 0;}
- hdu 3853 LOOPS
- hdu 3853 LOOPS
- HDU 3853 LOOPS
- hdu 3853 LOOPS
- hdu 3853 LOOPS
- hdu 3853 LOOPS
- [hdu 3853] LOOPS
- hdu 3853 LOOPS(期望)
- hdu 3853 LOOPS DP
- HDU 3853 — LOOPS
- HDU 3853 LOOPS
- HDU 3853 LOOPS
- hdu 3853 LOOPS
- HDU 3853 LOOPS
- HDU 3853 LOOPS
- hdu 3853 LOOPS
- HDU 3853 LOOPS
- hdu 3853 LOOPS 概率dp
- Android--将数据保存到SDCard中
- 二分图的最大匹配-hdu-3729-I'm Telling the Truth
- 当onclick无效的时候 可以尝试使用return false来解决
- IOS读取文件类和常用方法
- windows判断用户是否在使用键盘鼠标的API
- hdu 3853 LOOPS
- Android不同apk之间传递参数与数据
- H264参数结构二:网络提取层NAL (Net Abstraction Layer) & 视频编码层VCL (Video Coding Layer) .
- plupload 中文API
- IE兼容问题 在chrome中居中 在IE系列下就靠左
- TCP连接概念及c++编程 (整理)
- 浮点数比较问题
- android_PackageManager
- 《深度探索C++对象模式》——中篇