poj 2096

时间:2023-03-09 07:12:30
poj 2096
 /**
程序员调bug
思路: 一共有四种情况,
1、 1个原有的bug 在原有的分类中
2、 1个原有的bug 在新的分类中
3、 1个新的bug 在原有的分类中
4、 1个新bug 在新的分类中 **/
#include <iostream>
#include <cstdio>
using namespace std;
double dp[][];
int main()
{
int n,s;
cin>>n>>s;
for(int i=n;i>=;i--){
for(int j=s;j>=;j--){
if(i==n&&j==s)
continue;
double p1 = (double(s-j)*i)/n/(s);
double p2 = (double(n-i)*j)/n/(s);
double p3 = (double(s-j)*(n-i))/n/(s);
double p0 = 1.0-(double(j*i))/n/(s);
dp[i][j] = p1*dp[i][j+]+p2*dp[i+][j]+p3*dp[i+][j+]+;
dp[i][j] /= p0;
}
}
printf("%.4lf\n",dp[][]);
return ;
}