POJ 2096 Collecting Bugs (概率DP)

2015-01-24 13:19:00 · 作者: · 浏览: 4

题目地址:POJ 2096

第一发概率DP。详情看这篇博客,讲的很清楚了。

代码如下:

#include 
  
   
#include 
   
     #include 
    
      #include 
     
       #include 
      
        #include 
       
         #include 
         #include 
         
           #include 
          
            using namespace std; #define LL __int64 #define pi acos(-1.0) const int mod=100000000; const int INF=0x3f3f3f3f; const double eqs=1e-8; double dp[1005][1005]; int main() { int i, j, n, m; double p0, p1, p2, p3; while(scanf("%d%d",&n,&m)!=EOF){ dp[n][m]=0; for(i=n;i>=0;i--){ for(j=m;j>=0;j--){ if(i==n&&j==m) continue ; p1=(n-i)*(m-j)*1.0; p2=(n-i)*j*1.0; p3=i*(m-j)*1.0; dp[i][j]=(p1*dp[i+1][j+1]+p2*dp[i+1][j]+p3*dp[i][j+1]+n*m)/(n*m-i*j); } } printf("%.4f\n",dp[0][0]); } return 0; }