zoukankan      html  css  js  c++  java
  • UVA

    GRAVITATION, n.
    “The tendency of all bodies to approach one another with a strength
    proportion to the quantity of matter they contain – the quantity of
    matter they contain being ascertained by the strength of their tendency
    to approach one another. This is a lovely and edifying illustration of
    how science, having made A the proof of B, makes B the proof of A.”
    Ambrose Bierce
    You have a population of k Tribbles. This particular species of Tribbles live for exactly one day and
    then die. Just before death, a single Tribble has the probability Pi of giving birth to i more Tribbles.
    What is the probability that after m generations, every Tribble will be dead?
    Input
    The first line of input gives the number of cases, N. N test cases follow. Each one starts with a line
    containing n (1 ≤ n ≤ 1000), k (0 ≤ k ≤ 1000) and m (0 ≤ m ≤ 1000). The next n lines will give the
    probabilities P0, P1, . . . , Pn−1.
    Output
    For each test case, output one line containing ‘Case #x:’ followed by the answer, correct up to an
    absolute or relative error of 10−6
    .
    Sample Input
    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
    Sample Output
    Case #1: 0.3300000
    Case #2: 0.4781370
    Case #3: 0.6250000
    Case #4: 0.3164062

    题意:给你 k个球,  一个球可以活一天,在它死的时候会有概率pi生出i个小球,(0<=i<n) 现在问你m天后 所有小球全部死亡的概率是多少

    题解: 我们定义f[m] 为 一个小球 在活m天后死亡的概率 ,那么答案就是 f[m]^k

             对于f[i] = P0 + P1 * (f[i-1]^1) + P2 * (f[i-1] ^ 2) + ............

             递推得到答案

    #include <iostream>
    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <algorithm>
    using namespace std ;
    typedef long long ll;
    
    const int N=10000;
    
    int main() {
        int T, cas = 1, n, m, k;
        double p[N],f[N];
        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;
            for(int i = 1; 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
    ",cas++, pow(f[m],k));
        }
        return 0;
    }
    代码
  • 相关阅读:
    借助baidu的jsonp接口,做一个自己的候选词组件
    Cannot set property 'innerHTML' of null
    Win下端口占用问题:OSError: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试
    一文读懂ES6(附PY3对比)
    Wireshark:couldn't run dumpcap in child process(附带Linux下探索过程)
    一个模块导入的简单小测试
    万物互联之~网络编程加强篇
    网罗天下之~正则表达
    (转)RTSP协议详解
    (转)HLS协议,html5视频直播一站式扫盲
  • 原文地址:https://www.cnblogs.com/zxhl/p/5118781.html
Copyright © 2011-2022 走看看