概率DP/数学期望
kuangbin总结中的第7题
其实跟UVA 11762 Race To 1 那道题差不多……直接推下公式,然后倒推即可
Trick:有的点可能是p1[i][j]==1……这样的点是永远不会走出去的……所以也不能走到……遇到这样的点直接跳过就好了TAT
但是!!浮点数不能直接判定相等……应该写成 fabs(1-p[i][j][0])<eps 来判定!!!sad……
//HDOJ 3853
#include<cmath>
#include<cstdio>
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i) const int N=,INF=~0u>>;
const double eps=1e-;
double f[N][N],p[N][N][]; int main(){
int n,m;
while(scanf("%d%d",&n,&m)!=EOF){
F(i,,n) F(j,,m) F(k,,)
scanf("%lf",&p[i][j][k]);
f[n][m]=;
D(i,n,)
D(j,m,){
if (i==n && j==m) continue;
if (fabs(-p[i][j][])<eps) continue;
double *P=p[i][j];
f[i][j]=/(-P[]) + f[i][j+]*P[]/(-P[]) + f[i+][j]*P[]/(-P[]);
}
printf("%.3lf\n",f[][]);
}
return ;
}