#include <iostream> #include <vector> #include <iomanip> using namespace std; double frac(int m,int n){     double c = m * 1.0/n;     return c; } int main() {     int n,m;cin>>n>>m;     vector<vector<double>> dp(n + 1,vector<double> (m + 1,0.0));     for(int i = 1;i <= n;i++)dp[i][0] = 1.0;     for(int i = 1;i <= n;i++){         for(int j = 1;j <= m;j++){             dp[i][j] += i * 1.0/ (i + j);             if(i - 1 >= 0 && j - 2 >= 0)                 dp[i][j] += frac(j,i + j) * frac(j - 1,i + j - 1) * frac(i,i + j - 2) * dp[i - 1][j - 2];             if(j - 3 >= 0)                 dp[i][j] += frac(j,i + j) * frac(j - 1,i + j - 1) * frac(j - 2,i + j - 2) * dp[i][j - 3];         }     }     cout<<fixed<<setprecision(5)<<dp[n][m]<<endl;     return 0; }
点赞 评论

相关推荐

牛客网
牛客企业服务