zoukankan      html  css  js  c++  java
  • hdu 3853 LOOPS

    题意:

    给出一个n * m的格子,一个人在一开始在(1,1),要走到(n,m)。

    假设在(x,y),每次她可以花费2点的魔法能量,p1的概率走到(x,y),p2的概率走到(x,y+1),p3的概率走到(x+1,y),保证p1+p2+p3 = 1。

    问从(1,1)走到(n,m)花费的期望是多少。

    思路:

    简答概率dp,逆推。

    dp[i][j] = (dp[i][j+1] * p2 + dp[i+1][j] * p3) / (1 - p1)。

    但是要注意,当p1 == 1的时候要跳过

    代码:

     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <algorithm>
     4 using namespace std;
     5 const int N = 1005;
     6 double dp[N][N];
     7 double a[N][N][3];
     8 int main()
     9 {
    10     int n,m;
    11     while (scanf("%d%d",&n,&m) != EOF)
    12     {
    13         memset(dp,0,sizeof(dp));
    14         for (int i = 1;i <= n;i++)
    15         {
    16             for (int j = 1;j <= m;j++)
    17             {
    18                 for (int k = 0;k < 3;k++)
    19                 {
    20                     scanf("%lf",&a[i][j][k]);
    21                 }
    22             }
    23         }
    24         dp[n][m] = 0;
    25         for (int i = n;i >= 1;i--)
    26         {
    27             for (int j = m;j >= 1;j--)
    28             {
    29                 if (i == n && j == m) continue;
    30                 if (fabs(1.0-a[i][j][0]) < 1e-8) continue;
    31                 dp[i][j] = (a[i][j][1] * dp[i][j+1] + a[i][j][2] * dp[i+1][j] + 2.0) / (1.0-a[i][j][0]);
    32             }
    33         }
    34         printf("%.3f
    ",dp[1][1]);
    35     }
    36     return 0;
    37 }
  • 相关阅读:
    时尚前沿的图片左右滚动效果-1
    瀑布流效果
    js遮罩层弹出显示效果组件化
    javascript学习笔记(三)
    前端开发技巧
    Pushlet后台推送
    比较抽象的面试题
    技术点
    HTML5特性
    struts2学习笔记(二)
  • 原文地址:https://www.cnblogs.com/kickit/p/9005678.html
Copyright © 2011-2022 走看看