uva 11021 Tribbles 麻球繁衍 概率

来源:互联网 发布:淘宝进入一家店铺报错 编辑:程序博客网 时间:2024/04/28 00:36

题目链接:

https://uva.onlinejudge.org/external/110/11021.pdf


dp[x]的意义是某个麻球从出生到它和其后代全部死亡不超过x天的概率。

对于dp[x],先分类,再分布(数学),表达式中还会用到dp[x-1](递推)。

解答很简单,这样巧妙的赋予dp[x]的意义有很大关系。

有k个麻球,它们之间相互独立,所以ans=(dp[m])^k(乘法原理/分步)。


int n,m,k;double p[maxn],dp[maxn];int main(){    int T,kase=0;scanf("%d",&T);    while(T--)    {        scanf("%d%d%d",&n,&k,&m);//思维定势,开始写成了n,m,k;        for(int i=0;i<n;i++)            scanf("%lf",&p[i]);        dp[0]=0;        for(int i=1;i<=m;i++)        {            dp[i]=p[0];            for(int j=1;j<n;j++)            {                dp[i]+=p[j]*pow(dp[i-1],j); //一开始忘记了幂运算,要想清递推关系(数学关系)            }        }        printf("Case #%d: %.7lf\n",++kase,pow(dp[m],k)+eps);    }    return 0;}

#include<cstdio>#include<string>#include<cstring>#include<iostream>#include<cmath>#include<algorithm>#include<climits>#include<queue>#include<vector>#include<map>#include<sstream>#include<set>#include<stack>#include<utility>#pragma comment(linker, "/STACK:102400000,102400000")#define PI 3.1415926535897932384626#define eps 1e-10#define sqr(x) ((x)*(x))#define FOR0(i,n)  for(int i=0 ;i<(n) ;i++)#define FOR1(i,n)  for(int i=1 ;i<=(n) ;i++)#define FORD(i,n)  for(int i=(n) ;i>=0 ;i--)#define  lson   num<<1,le,mid#define rson    num<<1|1,mid+1,ri#define MID   int mid=(le+ri)>>1#define zero(x)((x>0? x:-x)<1e-15)#define mk    make_pair#define _f     first#define _s     secondusing namespace std;const int INF =0x3f3f3f3f;const int maxn= 1000+10   ;//const int maxm=    ;//const int INF=    ;typedef long long ll;//const ll inf =1000000000000000;//1e15;//ifstream fin("input.txt");//ofstream fout("output.txt");//fin.close();//fout.close();//freopen("a.in","r",stdin);//freopen("a.out","w",stdout);//by yskysker123





0 0
原创粉丝点击