zoukankan      html  css  js  c++  java
  • uva11021

    11021 - Tribles

    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

    题解:求概率,由全概率公式可以得到f[i]=p[0]+p[1]f[i-1]+p[2]f[i-1]^2+......+p[n-1]f[i-1]^[n-1];

    题意就是给你一系列概率代表生i个麻球的概率,让求m天后都死亡的概率;This particular species of Tribbles live for exactly one day and
    then die.说明包括中途死的;p[j]*f[i-1]^j代表这个麻球生了j个后代,他们在I-1天全死亡的概率;由于是独立的所以是j次方;

    最后结果还要k次方;

    代码:

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    #define mem(x,y) memset(x,y,sizeof(x))
    const int MAXN=1010;
    double p[MAXN],f[MAXN];
    int main(){
    	int T,n,k,m,kase=0;
    	scanf("%d",&T);
    	while(T--){
    		scanf("%d%d%d",&n,&k,&m);
    		for(int i=0;i<n;i++)scanf("%lf",p+i);
    		mem(f,0);
    		f[1]=p[0];f[0]=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
    ",++kase,pow(f[m],k));
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    CentOS7如何升级ruby版本
    多线程面试题:现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?(转载)
    hive举例实现字数统计
    hive单用户模式安装
    hadoop实例:电子商务网站商品推荐系统
    安装hadoop-eclipse-plugin 插件(win7)
    hadoop高可用分布式集群安装HDFS +yarm
    hadoop伪分布式安装(单机版) HDFS +Yarn
    Hadoop理论原理
    小技巧:oracle锁表杀进程
  • 原文地址:https://www.cnblogs.com/handsomecui/p/4992228.html
Copyright © 2011-2022 走看看