首先 ....
让我说一句... 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 }
today:
越是无心 越是会有好结果?
越是有心 越是没有好结果?
其实不是 只是期望值不同罢了