• UVA11021 Tribles


    题意翻译

    题目大意

    一开始有kk种生物,这种生物只能活1天,死的时候有p_ipi的概率产生ii只这种生物(也只能活一天),询问m天内所有生物都死的概率(包括m天前死亡的情况)

    输入格式

    第一行输入一个整数TT,表示数据总数

    每一组先输入三个整数n(1<=n<=1000),k(0<=k<=1000),m(0<=m<=1000)n(1<=n<=1000),k(0<=k<=1000),m(0<=m<=1000)

    然后输入n个整数,分别为p_0p0p_{n-1}pn1

    输出格式

    对于每一组数据,先输出"Case #x: " 再输出答案,精度要求在1e-6以内

    感谢@xMinh 提供翻译

    题目描述

    PDF

    输入输出格式

    输入格式:

    输出格式:

    输入输出样例

    输入样例#1: 复制
    4
    3 1 1
    0.33
    0.34
    0.33
    3 1 2
    0.33
    0.34
    0.33
    3 1 2
    0.5
    0.0
    0.5
    4 2 2
    0.5
    0.0
    0.0
    0.5
    输出样例#1: 复制
    Case #1: 0.3300000
    Case #2: 0.4781370
    Case #3: 0.6250000
    Case #4: 0.3164062


    //Pro:UVA11021 Tribles
    
    //每种麻球都是独立互不影响的,可以先算一种麻球
    //对于一种麻球,有全概率公式计算,
    //令f[i]为麻球在前i天全部死亡的概率
    //那么有f[i]=p0+p1*f[i-1]+p2*f[i-1]^2+...+pn*f[i-1]^n
    //最后的答案就是f[m]^k 
    
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    
    const int N=1e3+5;
    
    int T,n,k,m;
    double f[N];
    double p[N];
    
    
    int cas;
    int main()
    {
        scanf("%d",&T);
        while(T--)
        {
            memset(f,0,sizeof(f));
            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];
            for(int i=2;i<=m;++i)
            {
                for(int j=0;j<n;++j)
                {
                    f[i]+=p[j]*pow(f[i-1],j);
                }
            }
            printf("Case #%d: %.7lf
    ",++cas,pow(f[m],k));
        }
        return 0;
    }
  • 相关阅读:
    解除对80端口的占用
    php排序算法
    Jquery异步请求数据实例
    C# winform 递归选中TreeView子节点
    C# WinFrom 编写正则表达式验证类
    c# winfrom 委托实现窗体相互传值
    [转]我的第一个WCF
    计算字符串中子串出现的次数
    JQuery中的html(),text(),val()区别
    Crystal Report制作使用
  • 原文地址:https://www.cnblogs.com/lovewhy/p/9633529.html
Copyright © 2020-2023  润新知