您的位置:首页 > 其它

uva-11021-全概率公式

2018-05-01 17:51 351 查看

https://vjudge.net/problem/UVA-11021

 

    有n个球,每只的存活期都是1天,他死之后有pi的概率产生i个球(0<=i<n),一开始有k个球,问m天之后所有球都死完的概率(m天之前都死完也算m天之前的)。由于每个球的成长与死亡都是独立的所以我们可以分开讨论,设f(i)表示初始1个球的情况下i天死光的概率,那么答案就是pow(f(m),k)。现在只要求出f(m)即可,利用全概率公式 f(i)=P(0)+P(1)*f(i-1)+P(2)*f(i-1)2+...+P(n-1)*f(i-1)n-1.

    

#include<iostream>
#include<cstring>
#include<queue>
#include<cstdio>
#include<stack>
#include<set>
#include<map>
#include<cmath>
#include<ctime>
#include<time.h>
#include<algorithm>
using namespace std;
#define mp make_pair
#define pb push_back
#define debug puts("debug")
#define LL long long
#define pii pair<int,int>
#define eps 1e-12
double P[1010];
double f[1010];
int main()
{
int n,m,i,j,k,t;
int cas=0;
cin>>t;
while(t--){
scanf("%d%d%d",&n,&k,&m);
for(i=0;i<n;++i) scanf("%lf",P+i);
f[1]=P[0];
for(i=2;i<=m;++i){
f[i]=0;
for(j=0;j<n;j++){
f[i]+=P[j]*pow(f[i-1],j);
}
}
printf("Case #%d: %.7f\n",++cas,pow(f[m],k));
}
return 0;
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: