首页 > 代码库 > UVA 11021 /概率
UVA 11021 /概率
题意:
有k只鸟,每只鸟只能活一天,它可以在死之前生[0,n-1]只鸟,生出x只鸟的概率是p[x].问m天后所有的鸟都时光的概率。(m天之前就死了的也算上)。
输入:T、n、k、m.
题解:
每只鸟的的死亡与生幼鸟的概率是相互独立的,那么我们只需要算出一只鸟在m天后死亡的概率f[m]然后pow(f[m],k),就可以了。
设f[i]代表刚开始只有一只鸟的时候,i天全部死亡的概率;容易得到:f[0]=0;(第零天是不可能的情况) f[1]=p[0](第一天全部死亡,那么他没有产生鸟)。
f[2]=p[0]+p[1]*pow(f[1],1)+p[2]*pow(f[1],2)+.......;(第一只鸟产生0只的概率,产生1只的概率并且在(2-1)天后死亡的概率......的和)。
#include<bits/stdc++.h> const int maxn = 1050; double f[maxn],p[maxn]; int N,n,k,m; int main () { int ic=0; scanf("%d",&N); while(N--) { 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++) { f[i] = 0.0; for(int j = 0;j < n;j++) f[i] += p[j]*pow(f[i-1],j); } printf("Case #%d: %.7f\n",++ic,pow(f[m],k)); } return 0; }
UVA 11021 /概率
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。