标签:
Uva:11021
题目大意:每个麻球的生存周期是一天,一天结束后它可能繁殖出[0,n-1]个麻球,它们的概率分别是P[0]~P[i-1],那么起初k个麻球,在前m天全部死亡的概率是(包括不足m天就死亡的)?
分析:由各个麻球的独立性,我们其实只需要求解一个麻球进行繁殖,在前m天就全部死亡的概率,假设记为f[m],那么最终结果就是f[m]的k次方.
那么下面我们面临的问题变成了如何求解f[m]。
这里就要用到全概率公式,或者理解成动态规划也可以。这里我们通过概率的角度去解释。
这里设一个完整事件B={b1,b2,…bi…bn}表示一个麻球繁殖之后所有可能的结果,那么基于全概率公式:
我们得到如下的递推关系式:
简单的参考代码如下:
#include<cstdio> #include<cmath> #include<cstring> using namespace std; const int maxn = 1000 + 10; const int maxm = 1000 + 10; int n , k , m; double P[maxn] , f[maxm]; int main() { int T; int tt = 1; scanf("%d",&T); while(T--) { memset(f , 0 , sizeof(f)); scanf("%d%d%d",&n,&k,&m); for(int i = 0;i < n;i++) scanf("%lf",&P[i]); f[1] = P[0]; for(int i = 2;i <= m;i++) { for(int j = 0;j < n;j++) f[i] += P[j]*pow(f[i-1],j); } printf("Case #%d: %.7lf\n",tt++ , pow(f[m],k)); } return 0; }
标签:
原文地址:http://www.cnblogs.com/rhythmic/p/5720486.html