码迷,mamicode.com
首页 > 其他好文 > 详细

《训练指南》——7.28

时间:2016-07-30 12:05:53      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:

  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;
}

 

《训练指南》——7.28

标签:

原文地址:http://www.cnblogs.com/rhythmic/p/5720486.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!