第一道 感觉 ,,,,,,
不要太用算法那来看待概率DP
这就是数学题…
//MADE BY Y_is_sunshine;
//#include <bits/stdc++.h>
//#include <memory.h>
#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <sstream>
#include <cstdio>
#include <vector>
#include <string>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <set>
#define INF 0x3f3f3f3f
#define MAXN 1005
const int mod = 1e9 + 7;
const double PI = acos(-1);
using namespace std;
int d[MAXN];
int sum[MAXN];
double dp[MAXN][MAXN];
double p[MAXN][MAXN][4];
int main()
{
freopen("data.txt", "r", stdin);
int r, c;
while (cin >> r >> c) {
for (int i = 1; i <= r; i++) {
for (int j = 1; j <= c; j++) {
for (int k = 1; k < 4; k++)
scanf("%lf", &p[i][j][k]);
}
}
dp[r][c] = 0;
for (int i = r; i; i--) {
for (int j = c; j; j--) {
if (p[i][j][1] == 1)
continue;
//dp[i][j] = p[i][j][1] * dp[i][j] + p[i][j][2] * dp[i][j + 1] + p[i][j][3] * dp[i + 1][j] + 2;<----- 这是数学公式- -、
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]);
}
freopen("CON", "r", stdin);
system("pause");
return 0;
}