zoukankan      html  css  js  c++  java
  • hdu3853 LOOPS 期望dp

    hdu3853 LOOPS
    传送门
    题意
    有一个(r*c)的网格,在每一个格子处都有一定的概率停留,向右方格子移动和向下方格子移动,每次消耗2点力量值。计算从(1,1)到(r,c)需要消耗力量值的期望
    题解
    期望(dp)
    (dp[i][j])表示从(i,j)到(r,c)消耗力量值的期望
    设在某个格子处停留的概率为(k_0),向右移动一格的概率为(k_1),向下移动一格的概率为(k_2)
    递推关系式:
    (dp[i][j]=k_0*dp[i][j]+k_1*dp[i][j+1]+k_2*dp[i+1][j]+2)
    也就是
    (dp[i][j]=(k_1*dp[i][j+1]+k_2*dp[i+1][j]+2)/(1-k_0))
    特别处理分母为零的情况,如果(k_0==1),则设(dp[i][j]=0),也就是无法从这个格子转移

    #include<iostream>
    #include<cstdio>
    #include<vector>
    #include<stack>
    #include<queue>
    #include<set>
    #include<map>
    #include<cstring>
    #include<string>
    #include<sstream>
    #include<cmath>
    #include<ctime>
    #include<algorithm>
    #define LL long long
    #define PII pair<int,int>
    #define PLL pair<LL,LL>
    #define pi acos(-1.0)
    #define eps 1e-6
    #define lowbit(x) x&(-x)
    using namespace std;
    
    int n,m;
    double a[1010][1010][5],dp[1010][1010];
    
    int main(){
        while(scanf("%d %d",&n,&m)!=EOF){
            for(int i=0;i<n;i++){
                for(int j=0;j<m;j++){
                    for(int k=0;k<3;k++) scanf("%lf",&a[i][j][k]);
                }
            }
            memset(dp,0,sizeof(dp));
            for(int i=n-1;i>=0;i--){
                for(int j=m-1;j>=0;j--){
                    if(i==n-1 && j==m-1) continue;
                    double k0=a[i][j][0];
                    double k1=a[i][j][1];
                    double k2=a[i][j][2];
                    if(fabs(k0-1.0)<eps) continue;
                    dp[i][j]=(k1*dp[i][j+1]+k2*dp[i+1][j]+2)/(1-k0);
                }
            }
            printf("%.3f
    ",dp[0][0]);
        }
        return 0;
    }
    
  • 相关阅读:
    C++的XML编程经验――LIBXML2库使用指南
    C/C++:sizeof('a')的值为什么不一样?
    Linux core dump file详解
    非阻塞socket的连接
    Java环境设置、HelloWorld例子、Ant环境及运行
    linux下杀死进程命令
    IP协议详解
    内置函数(上)
    异常处理
    递归函数与二分法
  • 原文地址:https://www.cnblogs.com/fxq1304/p/13504595.html
Copyright © 2011-2022 走看看