hdu--3853--概率dp

首先 ....

让我说一句...  F M L 

这几天被概率 区间dp折磨地死去活来  都太TM要智商了 太伤了啊。。。

烦的一比..

/////////////////////////////

这题 真心算我这几天遇到的最简单的了...

dp[ i ][ j ] =  p[ i ][ j ][ 0 ] * ( dp[ i ][ j ] + 2 ) + p[ i ][ j ][ 1 ] * ( dp[ i ][ j+1 ] +2 ) + p[ i ][ j ][ 2 ] * ( dp[ i+1 ][ j ] + 2 )

p[ i ][ j ][ 0 ] + p[ i ][ j ][ 1 ] + p[ i ][ j ][ 2 ] = 1

that's all

//吐槽下hdu的G++   对于cin.sync_with_stdio(false)好像没起作用一样的  我tle ..改scanf printf就能ac 

 1 #include <iostream>
 2 #include <cstring>
 3 using namespace std;
 4 
 5 int n , m;
 6 const int size = 1010;
 7 double p[size][size][3];
 8 double dp[size][size];
 9 
10 void solve( )
11 {
12     for( int i = n ; i>=1 ; i-- )
13     {
14         for( int j = m ; j>=1 ; j-- )
15         {
16             if( p[i][j][0]==1 )
17                 continue;
18             dp[i][j] = ( p[i][j][1] * dp[i][j+1] + p[i][j][2] * dp[i+1][j] + 2 ) / ( 1-p[i][j][0] );
19         }
20     }
21 }
22 
23 int main()
24 {
25     while( ~scanf("%d %d",&n,&m) )
26     {
27         memset( dp , 0 , sizeof(dp) );
28         for( int i = 1 ; i<=n ; i++ )
29         {
30             for( int j = 1 ; j<=m ; j++ )
31             {
32                 scanf("%lf %lf %lf",&p[i][j][0],&p[i][j][1],&p[i][j][2] );
33             }
34         }
35         solve( );
36         printf("%.3lf
",dp[1][1] );
37     }
38     return 0;
39 }
View Code

today:

  越是无心 越是会有好结果?

  越是有心 越是没有好结果?

  其实不是 只是期望值不同罢了

原文地址:https://www.cnblogs.com/radical/p/4112878.html