题目链接
题目大意
有s个系统,n种bug,小明每天找出一个bug,可能是任意一个系统的,可能是任意一种bug,即是某一系统的bug概率是1/s,是某一种bug概率是1/n。 求他找到s个系统的bug,n种bug,需要的天数的期望。
题目思路
对于期望的题目我们一般逆推,为的就是保证事件之间独立不产生影响。 对于概率的题目,我们一般正推解决问题。
还有一份讲解 来源:https://www.cnblogs.com/flipped/p/5230359.html
代码
#include<cstdio>
#include<vector>
#include<cstring>
#include<algorithm>
using namespace std
;
typedef long long ll
;
const int maxn
=1000+5,inf
=0x3f3f3f3f;
const int mod
=1e9+7;
int n
,s
;
double dp
[maxn
][maxn
];
int main(){
scanf("%d%d",&n
,&s
);
for(int i
=n
;i
>=0;i
--){
for(int j
=s
;j
>=0;j
--){
if(i
==n
&&j
==s
) continue;
dp
[i
][j
]=(n
*s
+dp
[i
+1][j
]*(n
-i
)*j
+dp
[i
][j
+1]*i
*(s
-j
)+dp
[i
+1][j
+1]*(n
-i
)*(s
-j
))/(n
*s
-i
*j
);
}
}
printf("%.4f",dp
[0][0]);
return 0;
}