HDU 3853 概率dp
2016-03-08 21:45
330 查看
#include <cstdio> #include <cmath> const int maxn = 1E3 + 10; const double eps = 1e-8; double dp[maxn][maxn], p1[maxn][maxn], p2[maxn][maxn], p3[maxn][maxn]; int R, C; int main(int argc, char const *argv[]) { while (~scanf("%d%d", &R, &C) && R + C) { for (int i = 1; i <= R; i++) for (int j = 1; j <= C; j++) scanf("%lf%lf%lf", &p1[i][j], &p2[i][j], &p3[i][j]); 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 (fabs(1 - p1[i][j]) < eps) continue; dp[i][j] = p2[i][j] / (1 - p1[i][j]) * dp[i][j + 1] + p3[i][j] / (1 - p1[i][j]) * dp[i + 1][j] + 2 / (1 - p1[i][j]); } printf("%.3lf\n", dp[1][1]); } return 0; }
设dp[i][j]表示(i,j)到(R,C)需要消耗的能量
dp[i][j]=p1[i][j]*dp[i][j]+p2[i][j]*dp[i][j+1]+p3[i][j]*dp[i+1][j]+2;
相关文章推荐
- 以动态列表配置选项(ListActivity与Menu整合技巧)
- Socket检测数据库连接状态
- 以Access为支撑,书写一个C#写入记录的案例
- 杭电5053
- 4.4.4 Android animation List 实现充能塔的效果
- android使用AIDL实现跨进程通讯(IPC)
- opencv基础数据结构
- bzoj1901 动态主席树
- GridView视图(BaseAdapter)
- [C/C++] 常用算法
- WCF寄宿
- uboot启动流程
- 软件工程初涉之感
- 测试方法总结
- 开始学习 Linux
- poj 3187 Backward Digit Sums(dfs暴搜)
- JAVA回调函数
- 三个水杯
- STM32CubeMx基本说明
- 九度OJ 1451-1460(10/10)