cogs 1487. 麻球繁衍
★ 输入文件:tribbles.in 输出文件:tribbles.out 评测插件
时间限制:3 s 内存限制:256 MB
【题目描述】
万有引力定律:
“使物体相互靠近的力的大小与物体的质量成正比——而物体的质量又由同一种力决定。这是一个有趣并且有益的例子,说明了科学是如何用A证明B,再用B证明A的。”——安布罗斯·比尔斯(美国讽刺作家——译者注)。
你有一坨K个毛球(<星际迷航>中的种族——译者注)。这种毛球只会存活一天。在死亡之前,一个毛球有P_i的概率生出i个毛球(i=0,1,...,n-1)。m天后所有毛球都死亡的概率是多少?(包含在第m天前全部死亡的情况)
【输入格式】
输入包含多组数据。
输入文件的第1行是一个正整数N,表示数据组数。
每组数据的第1行有3个正整数n(1<=n<=1000),k(0<=k<=1000),m(0<=m<=1000)。
接下来有n行,给出P_0,P_1,...,P_n-1。
【输出格式】
对于第i组数据,输出"Case #i: ",后面是第m天后所有毛球均已死亡的概率。
【样例输入】
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
【样例输出】
Case #1: 0.3300000
Case #2: 0.4781370
Case #3: 0.6250000
Case #4: 0.3164063
【提示】
如果你的输出与标准答案相差不超过10^-5,那么你的答案就被认为是正确的。
【来源】
刘汝佳,《算法竞赛入门经典训练指南》表2.8
题解:
由于每个毛球之间是死是活还是生与其他毛球毫无关系,所以不妨先把初始的毛球看成一个,然后把算出的答案转化成ans^k即可。
令f[i]表示一只毛球活i天的概率,这个毛球可能是从前几天出生来的,所以f[i]=p0+p1*f[i-1]^1+p2*f[i-1]^2+....+p(n-1)*f[i-1]^(n-1),可以这么理解:因为所有毛球仅能存活一天,所以生在i-1天的毛球一定会在第i天卒,那么对f[i]的答案有贡献的就只有f[i-1]了。假设M=2,N=3,K=1。则f[2]=p0+p1*f[i-1]+p2*f[i-2]^2,p0表示这只毛球不生直接卒,p1*f[i-1]表示这只毛球在一开始生了p1只毛球,这p1只毛球坚持i-1天卒了,由于毛球之间互不影响所以对于概率要乘上f[i-1]的一次方,p2*f[i-1]^2同理。其实这应该是一个递归的过程,但既然式子推出来了,改成递推也无妨。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<vector>
using namespace std;
typedef long long LL;
int T,N,K,M;
double p[],f[];
inline double poww(double a,int b){
double base=a,ans=1.0000;
while(b){
if(b&) ans*=base;
base*=base; b>>=;
}
return ans;
}
int main(){
freopen("tribbles.in","r",stdin);
freopen("tribbles.out","w",stdout);
scanf("%d",&T);
for(int t=;t<=T;t++){
scanf("%d%d%d",&N,&K,&M); memset(f,,sizeof(f));
for(int i=;i<N;i++) scanf("%lf",&p[i]); f[]=p[];
for(int i=;i<=M;i++){
for(int j=;j<=N-;j++){
f[i]+=p[j]*poww((f[i-]),j);
}
}
double ANS=1.000;
for(int i=;i<=K;i++) ANS*=f[M];
printf("Case #%d: %.7lf\n",t,ANS);
}
return ;
}
cogs 1487. 麻球繁衍的更多相关文章
- 【概率】COGS 1487:麻球繁衍
Description 万有引力定律: “使物体相互靠近的力的大小与物体的质量成正比——而物体的质量又由同一种力决定.这是一个有趣并且有益的例子,说明了科学是如何用A证明B,再用B证明A的.”——安布 ...
- UVa 11021 麻球繁衍
https://vjudge.net/problem/UVA-11021 题意:有k只麻球,每只活一天就会死亡,临死之前可能会生出一些新的麻球.具体来说,生i个麻球的概率为Pi.给定m,求m天后所有麻 ...
- UVA11021麻球繁衍
题意: 有K只麻球,每只生存一天就会死亡,每只麻球在死之前有可能生下一些麻球,生i个麻球的概率是pi,问m天后所有的麻球都死亡的概率是多少? 思路: 涉及到全概率公式,因为麻球的 ...
- 【UVA】【11021】麻球繁衍
数序期望 刘汝佳老师的白书上的例题……参见白书 //UVA 11021 #include<cmath> #include<cstdio> #define rep(i,n) fo ...
- 【乱入】Uva11021麻球繁衍
就是根据概率公式入门算算. #include<bits/stdc++.h> ; int n,m,k; double p[N],f[N]; int main(){ int T;scanf(& ...
- COGS1487 麻球繁衍
不会做%%http://blog.csdn.net/doom_bringer/article/details/50428503 #include<bits/stdc++.h> #defin ...
- 2019暑期集训第二讲 - 组合数学&概率&数学期望
A - 容斥原理(CodeForces - 451E) 二进制状态压缩暴力枚举哪几个花选的个数超过了总个数,卢卡斯定理求组合数,容斥原理求答案 可以先把每个花的数量当成无限个,这样就是一个多重集的组合 ...
- 算法讲堂二:组合数学 & 概率期望DP
组合数学 1. 排列组合 1. 加法原理 完成一列事的方法有 n 类,其中第 i 类方法包括\(a_i\)种不同的方法,且这些方法互不重合,则完成这件事共有 \(a_1 + a_2 + \cdots ...
- Tribles UVA - 11021(全概率推论)
题意: 有k只麻球,每只只活一天,临死之前可能会出生一些新的麻球, 具体出生i个麻球的概率为P,给定m,求m天后麻球全部死亡的概率. 解析: 从小到大,先考虑一只麻球的情况 设一只麻球m天后全部死亡 ...
随机推荐
- ehcache 的 配置文件: ehcache.xml的认识
<ehcache> <!-- 指定一个目录:当 EHCache 把数据写到硬盘上时, 将把数据写到这个目录下. --> <diskStore path="d:\ ...
- HDU_5536_Chip Factory
Chip Factory Time Limit: 18000/9000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)T ...
- [iOS微博项目 - 4.0] - 自定义微博cell
github: https://github.com/hellovoidworld/HVWWeibo A.自定义微博cell基本结构 1.需求 创建自定义cell的雏形 cell包含:内容.工具条 内 ...
- 如何使用 libtorch 实现 LeNet 网络?
如何使用 libtorch 实现 LeNet 网络? LeNet 网络论文地址: http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf
- matrix---简单dp,边界边界-_-
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5569 简单dp,恶心的边界处理,无语: if((i+j)%2==1) dp[i][j]=a[i-1][ ...
- Python并行编程(六):线程同步之条件
1.基本概念 条件指的是应用程序状态的改变.其中某些线程在等待某一条件发生,其 他线程会在该条件发生的时候进行通知,一旦条件发生,线程会拿到共享资源的唯一权限. 2.示例代码 from threadi ...
- PHP代码编写的优化
// $b 会新创建一个内存空间 $a = array('a'=>'aa','b'=>'bb'); $b = $a; $a['c'] = 'cc'; // $b 会引用 $a 的内存空间 ...
- 安卓android的联系人的contacts, raw contacts, and data的区别
https://stackoverflow.com/questions/5151885/android-new-data-record-is-added-to-the-wrong-contact/51 ...
- SAMA5D3 Xplained Board
一.烧录 1)先在官网 http://www.at91.com/linux4sam/bin/view/Linux4SAM/Sama5d3XplainedMainPage 下载 linux4sam-p ...
- PAT 1115 Counting Nodes in a BST[构建BST]
1115 Counting Nodes in a BST(30 分) A Binary Search Tree (BST) is recursively defined as a binary tre ...