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

    题目链接:

    http://acm.hdu.edu.cn/showproblem.php?pid=3853

    LOOPS

    Time Limit: 15000/5000 MS (Java/Others)
    Memory Limit: 125536/65536 K (Java/Others)
    #### 问题描述 > Akemi Homura is a Mahou Shoujo (Puella Magi/Magical Girl). > > Homura wants to help her friend Madoka save the world. But because of the plot of the Boss Incubator, she is trapped in a labyrinth called LOOPS. > > > The planform of the LOOPS is a rectangle of R*C grids. There is a portal in each grid except the exit grid. It costs Homura 2 magic power to use a portal once. The portal in a grid G(r, c) will send Homura to the grid below G (grid(r+1, c)), the grid on the right of G (grid(r, c+1)), or even G itself at respective probability (How evil the Boss Incubator is)! > At the beginning Homura is in the top left corner of the LOOPS ((1, 1)), and the exit of the labyrinth is in the bottom right corner ((R, C)). Given the probability of transmissions of each portal, your task is help poor Homura calculate the EXPECT magic power she need to escape from the LOOPS.

    输入

    The first line contains two integers R and C (2 <= R, C <= 1000).

    The following R lines, each contains C*3 real numbers, at 2 decimal places. Every three numbers make a group. The first, second and third number of the cth group of line r represent the probability of transportation to grid (r, c), grid (r, c+1), grid (r+1, c) of the portal in grid (r, c) respectively. Two groups of numbers are separated by 4 spaces.

    It is ensured that the sum of three numbers in each group is 1, and the second numbers of the rightmost groups are 0 (as there are no grids on the right of them) while the third numbers of the downmost groups are 0 (as there are no grids below them).

    You may ignore the last three numbers of the input data. They are printed just for looking neat.

    The answer is ensured no greater than 1000000.

    Terminal at EOF

    输出

    A real number at 3 decimal places (round to), representing the expect magic power Homura need to escape from the LOOPS.

    样例输入

    2 2
    0.00 0.50 0.50 0.50 0.00 0.50
    0.50 0.50 0.00 1.00 0.00 0.00

    样例输出

    6.000

    题意

    给你一个R*C的地图,你要从(1,1)走到(R,C),每次你可以选择留原地,或向下走一格,或向右走一格,问最后的

    题解

    poj 2096一个意思。

    代码

    #include<map>
    #include<set>
    #include<cmath>
    #include<queue>
    #include<stack>
    #include<ctime>
    #include<vector>
    #include<cstdio>
    #include<string>
    #include<bitset>
    #include<cstdlib>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #include<functional>
    using namespace std;
    #define X first
    #define Y second
    #define mkp make_pair
    #define lson (o<<1)
    #define rson ((o<<1)|1)
    #define mid (l+(r-l)/2)
    #define sz() size()
    #define pb(v) push_back(v)
    #define all(o) (o).begin(),(o).end()
    #define clr(a,v) memset(a,v,sizeof(a))
    #define bug(a) cout<<#a<<" = "<<a<<endl
    #define rep(i,a,b) for(int i=a;i<(b);i++)
    #define scf scanf
    #define prf printf
    
    typedef long long LL;
    typedef vector<intVI;
    typedef pair<int,intPII;
    typedef vector<pair<int,intVPII;
    
    const int INF=0x3f3f3f3f;
    const LL INFL=0x3f3f3f3f3f3f3f3fLL;
    const double eps=1e-8;
    const double PI = acos(-1.0);
    
    //start----------------------------------------------------------------------
    
    const int maxn=1010;
    int R,C;
    double pro[maxn][maxn][3];
    double dp[maxn][maxn];
    
    int main() {
        while(scf("%d%d",&R,&C)==2){
            for(int i=1;i<=R;i++){
                for(int j=1;j<=C;j++){
                    for(int k=0;k<3;k++){
                        scf("%lf",&pro[i][j][k]);
                    }
                }
            }
    
            for(int i=R;i>=1;i--){
                for(int j=C;j>=1;j--){
                    if(i==R&&j==C){
                        dp[i][j]=0.0;
                    }else{
                        double p0=pro[i][j][0];
                        double p1=pro[i][j][1];
                        double p2=pro[i][j][2];
                        ///注意有些点是黑洞,跳不出去的!
                        if(fabs(1-p0)<eps) continue;
                        dp[i][j]=(p1*dp[i][j+1]+p2*dp[i+1][j]+2)/(1-p0);
                    }
                }
            }
    
            prf("%.3f
    ",dp[1][1]);
        }
        return 0;
    }
    
    //end-----------------------------------------------------------------------
  • 相关阅读:
    Python之文件操作
    document.hasFocus() & $(window).blur()
    innerHtml 会忽略里面元素的属性
    ng  命令集合
    阿里云ECS CentOs7.3下搭建LAMP环境(Apache2.4 + Mysql5.7 + PHP5.6 + Laravel5.2)
    在忘记root密码的时候,可以这样 亲测可用
    下一次装mysql 试一下这个方法
    CentOS-6.8安装Mysql-5.5.29
    阿里云服务器下安装LAMP环境(CentOS Linux 6.3)
    CentOS 7.2 配置Apache服务(httpd)--上篇
  • 原文地址:https://www.cnblogs.com/fenice/p/5965631.html
Copyright © 2011-2022 走看看