UVa 11021 麻球繁衍
2017-04-08 19:27
465 查看
https://vjudge.net/problem/UVA-11021
题意:
有k只麻球,每只活一天就会死亡,临死之前可能会生出一些新的麻球。具体来说,生i个麻球的概率为Pi。给定m,求m天后所有麻球均死亡的概率。
思路:
每只麻球都是独立存活的,也就是说如果一开始如果有两只麻球,我们只需要求出一只麻球的情况就可以了,因为另外一只麻球的情况和这一只是一样的。设f(m)表示初始1只麻球,到第m天全部死亡的概率。
根据全概率公式:
f的上标代表的是生了几只麻球,因为每只麻球的死亡是独立的,所以把它们乘起来即可。
题意:
有k只麻球,每只活一天就会死亡,临死之前可能会生出一些新的麻球。具体来说,生i个麻球的概率为Pi。给定m,求m天后所有麻球均死亡的概率。
思路:
每只麻球都是独立存活的,也就是说如果一开始如果有两只麻球,我们只需要求出一只麻球的情况就可以了,因为另外一只麻球的情况和这一只是一样的。设f(m)表示初始1只麻球,到第m天全部死亡的概率。
根据全概率公式:
f的上标代表的是生了几只麻球,因为每只麻球的死亡是独立的,所以把它们乘起来即可。
#include<iostream> #include<cstdio> #include<cmath> #include<cstring> using namespace std; const int maxn=1000+5; int n,k,m; double p[maxn]; double f[maxn]; int main() { //freopen("D:\\input.txt","r",stdin); int T; int kase=0; scanf("%d",&T); while(T--) { scanf("%d%d%d",&n,&k,&m); for(int i=0;i<n;i++) scanf("%lf",&p[i]); f[0]=0; f[1]=p[0]; //一只麻球1天后全死完的概率就是生了0只麻球,这个概率也就是p[0] for(int i=2;i<=m;i++) { f[i]=0; for(int j=0;j<n;j++) f[i]+=p[j]*pow(f[i-1],j); } printf("Case #%d: %.7lf\n",++kase,pow(f[m],k)); } return 0; }
相关文章推荐
- uva 11021 Tribbles 麻球繁衍 概率dp
- 【UVA】【11021】麻球繁衍
- UVA 11021繁衍模型+概率计算
- UVA11021麻球繁衍
- uva 11021 数学概率 麻球
- 概率dp - UVA 11021 Tribles
- UVA 11021 Problem A Tribbles
- UVA11021--Tribles
- UVA 11021 Tribbles【概率】
- Uva11021 Tribbles
- UVA - 11021 - Tribles 递推概率
- UVa 11021 (概率 递推) Tribles
- UVA 11021 Tribles (概率dp)
- UVA 11021 Tribbles(白书上的题)
- Uva 11021-Tribles(概率+递推)
- 【cojs1487】麻球繁衍
- 概率dp - UVA 11021 Tribles
- 【uva 11021】Tribbles
- 概率DP,递推(麻球繁殖,UVA 11021)
- UVa 11021 Tribles (概率DP + 组合数学)