●UVA 11021 tunnello

题链:

https://vjudge.net/problem/UVA-11021
题解:

概率DP。
定义dp[i]表示初始1只麻球的情况下,第i天都死完的概率。
(因为每只麻球互相独立,那么最后答案为dp[i]^K。)
考虑dp[i]如何计算,仍然运用全概率公式:
把转移来源分为互相独立的部分,这里就是枚举第一天结束时,那只麻球生了几个仔仔。
如果生下了j个仔仔,那么问题就变成了相同子问题:即初始j个麻球,要在i-1后死完的概率为多少,显然为dp[i-1]^j
所以转移为:$$dp[i]=\sum_{j=0}^{N}p[j]*(dp[i-1]^j)$$

代码:

#include<bits/stdc++.h>
#define MAXN 1005
using namespace std;
double fastpow(double a,int b){
	double ret=1;
	for(;b;b>>=1,a=a*a)
		if(b&1) ret=ret*a;
	return ret;
}
int N,K,M;
double p[MAXN],dp[MAXN];
int main(){
	int Case; scanf("%d",&Case);
	for(int C=1;C<=Case;C++){
		dp[0]=0;
		scanf("%d%d%d",&N,&K,&M);
		for(int i=0;i<N;i++) scanf("%lf",&p[i]);
		for(int i=1;dp[i]=0,i<=M;i++)
			for(int j=0;j<N;j++)
				dp[i]+=p[j]*fastpow(dp[i-1],j);
		printf("Case #%d: %.7lf\n",C,fastpow(dp[M],K));
	}
	return 0;
}

  

原文地址:https://www.cnblogs.com/zj75211/p/8541929.html

时间: 2024-08-09 18:53:05

●UVA 11021 tunnello的相关文章

UVA 11021 - Tribles(概率递推)

UVA 11021 - Tribles 题目链接 题意:k个毛球,每个毛球死后会产生i个毛球的概率为pi,问m天后,所有毛球都死亡的概率 思路:f[i]为一个毛球第i天死亡的概率,那么 f(i)=p0+p1f(i?1)+p2f(i?1)2+...+pnf(i?1)n 然后k个毛球利用乘法定理,答案为f(m)k 代码: #include <stdio.h> #include <string.h> #include <math.h> const int N = 1005;

UVA 11021 - Tribles(概率)

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=481&page=show_problem&problem=1962 刚开始没理解题意,看了题解之后也不太理解,现在好点了. 其实可以看作每个麻球的后代是独立的,后代的后代同理也是独立的. 一只麻球有P[j]的概率生j只后代,每只后代在i-1天后死亡的的概率是f[i-1],j只麻球即有pow(f[i-1], j)的概率在

UVA 11021 /概率

题意: 有k只鸟,每只鸟只能活一天,它可以在死之前生[0,n-1]只鸟,生出x只鸟的概率是p[x].问m天后所有的鸟都时光的概率.(m天之前就死了的也算上). 输入:T.n.k.m. 题解: 每只鸟的的死亡与生幼鸟的概率是相互独立的,那么我们只需要算出一只鸟在m天后死亡的概率f[m]然后pow(f[m],k),就可以了. 设f[i]代表刚开始只有一只鸟的时候,i天全部死亡的概率;容易得到:f[0]=0;(第零天是不可能的情况) f[1]=p[0](第一天全部死亡,那么他没有产生鸟). f[2]=

UVA 11021(概率)

题意:有k个毛球,每只活一天就会死亡,临死之前可能会生出一些新的毛球.具体来说,生i个毛球的概率为Pi.给定m,求m天所有毛球均死亡的概率. 注意,不足m天时就已全部死亡的情况也算在内. 题解:由于每只毛球的后代独立存活,只需求出一开始只有1只毛球,m天后全部死亡的概率f(m).由全概率公式,有 f(i) = P0 + P1*f(i-1) + P2*f(i-1)^2 + P3*f(i-1)^3 + ......+Pn-1 * f(i-1)^(n-1); 其中Pj*f(i-1)^j的含义是这个毛球

UVA 11021 Tribles(递推+概率)

题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=33059 [思路] 递推+概率. 设f[i]表示一只Tribble经过i天之后死绝的概率,则有递推式: f[i]=p[0]+p[1]*(f[i-1]^1)+…p[n-1]*(f[i-1]^n-1) 最后答案为f[m]^k [代码] 1 #include<cstdio> 2 #include<cstring> 3 #define FOR(a,b,c) f

uva 11021 Tribles

https://vjudge.net/problem/UVA-11021 k只麻球,每只活一天就死亡,临死之前可能会生成0——n-1只麻球 给出 生成i只麻球的概率p, 问m天后所有麻球都死亡的概率 令dp[i]表示1只麻球产生的后代在前i天死亡的概率 定义 pj * dp[i-1]^j 表示1只麻球产生了j个后代,他们全在前i-1天死亡 dp[i]= Σ  p j*dp[i-1]^j ans=dp[m]^k #include<cmath> #include<cstdio> #de

UVA - 11021 - Tribles 递推概率

GRAVITATION, n.“The tendency of all bodies to approach one another with a strengthproportion to the quantity of matter they contain – the quantity ofmatter they contain being ascertained by the strength of their tendencyto approach one another. This

UVa 11021 (概率 递推) Tribles

Tribble是麻球? 因为事件都是互相独立的,所以只考虑一只麻球. 设f(i)表示一只麻球i天后它以及后代全部死亡的概率,根据全概率公式: f(i) = P0 + P1 * f(i-1) + P2 * f(i-1)2 + ... + Pn * f(n)n 每个麻球死亡是独立的,所以Pj * f(i-1)j 表示生了j个麻球,这j个麻球要在i-1天内全部死亡. 1 #include <cstdio> 2 #include <cmath> 3 using namespace std;

UVA - 11021 Tribles (递推+概率)

Description Problem A Tribbles Input: Standard Input Output: Standard Output 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