uva-11021

来源:互联网 发布:枪机摄像头网络拓扑图 编辑:程序博客网 时间:2024/06/08 09:02

我觉得这种概率题很难想清楚后代之间的概率影响,后代产生后代,那么后代之后的概率应该怎么算。

/*************************************************************************    > Author: MentalOmega    > Mail: 965194745@qq.com    > Created Time:2017年9月1日    > function:学习一下求取期望的方法。    定义一个函数,f(i),第i天后一个麻球的后代全部死掉的概率,麻球之间的死亡是相互独立的,满足乘法定律    pi按照题目的要求是产生i个后代的概率。    那么f(i)=p0+p1*f(i-1)+p2*f(i-1)^2+...+pi*f(i-1)^i ************************************************************************/#include<bits/stdc++.h>using namespace std;const int MAXN = 1e3+10;double f[MAXN];double p[MAXN];int n,k,m;double dfs(int u){    if(u==1) return p[0];    if(f[u]!=-1) return f[u];    long double ans=0;    for(int i=0;i<n;i++)    {        ans+=p[i]*pow(dfs(u-1),i);    }    return f[u]=ans;}int main(){    if (fopen("in.txt", "r") != NULL)    {        freopen("in.txt", "r", stdin);        // freopen("out.txt", "w", stdout);    }    int t ;    cin>>t;    int icase=0;    while(t--)    {        cout<<"Case #"<<++icase<<": ";        fill(f,f+MAXN,-1);        f[0]=0;        cin>>n>>k>>m;        for(int i=0;i<n;i++)            cin>>p[i];        //printf("%.7f\n",pow(dfs(m),k));        cout<<pow(dfs(m),k)<<endl;    }    return 0;}
原创粉丝点击