hdu 3853 LOOPS 概率dp

做法:基本题了,被魔法消耗坑了,每次两点...

#include<cstdio>
#include<cstring>
#include<cmath>
#define eps 1e8
const int LMT=1002;
double dp[LMT][LMT],p[3][LMT][LMT],ep[LMT][LMT];
void init(void)
{
    memset(dp,0,sizeof(dp));
}
int main(void)
{
    int r,c,i,j;
    while(~scanf("%d%d",&r,&c))
    {
        init();
        for(i=0;i<r;i++)
            for(j=0;j<c;j++)
                scanf("%lf%lf%lf",&p[0][i][j],&p[1][i][j],&p[2][i][j]);
            for(i=r-1;i>=0;i--)
                for(j=c-1;j>=0;j--)
                    {
                    if(i==r-1&&j==c-1)continue;
                    if(p[0][i][j]==1)continue;
                    dp[i][j]+=2/(1-p[0][i][j]);
                        if(i<r-1)dp[i][j]+=p[2][i][j]*dp[i+1][j]/(1-p[0][i][j]);
                        if(j<c-1)dp[i][j]+=p[1][i][j]*dp[i][j+1]/(1-p[0][i][j]);
                    }
                    printf("%.3lf\n",dp[0][0]);
    }
    return 0;
}


 

你可能感兴趣的:(hdu 3853 LOOPS 概率dp)