UVa11021 Tribbles

你有K个麻球。一个只会存活一天。在死亡之前,一个麻球有P_i的概率生出i个麻球(i=0,1,…,n-1)。m天后所有麻球都死亡的概率是多少?(包含在第m天前全部死亡的情况)


麻球之间是独立的,只算一个麻球就行了

直接枚举生出几只麻球算概率

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
const int N=;
const double eps=1e-;
inline int read(){
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
}
int n,m,k;
double p[N],f[N];
double Pow(double a,int b){
double re=1.0;
for(;b;b>>=,a*=a)
if(b&) re*=a;
return re;
}
int main(){
freopen("tribbles.in","r",stdin);
freopen("tribbles.out","w",stdout);
int T=read(),cas=;
while(T--){
n=read();k=read();m=read();
for(int i=;i<n;i++) scanf("%lf",&p[i]);
f[]=p[];
for(int i=;i<=m;i++){
f[i]=p[];
double po=;
for(int j=;j<n;j++) po*=f[i-],f[i]+=p[j]*po;
}
printf("Case #%d: %.7lf\n",++cas,Pow(f[m],k));
}
}



Uva11427 Expect the Expected

我喜欢玩纸牌接龙。每次我都有p的概率赢,1-p的概率输。游戏程序会统计我获胜盘数的百分比。如果我一直玩下去,这个百分比就会在p*100%左右浮动。但我仍不满足。

这是我的计划。每天,我都会玩纸牌接龙。如果我赢了,我就高高兴兴地去睡觉。如果我输了,我就一直玩下去直到我这天获胜盘数的百分比严格大于p。这时,我就会宣布胜利,然后高高兴兴地去睡觉。你可以看到,每天我都可以宣布自己保持了获胜比例大于p*100%。我打败了数学规律!

如果你感觉这里好像有什么奇怪的东西,那你就对了。我不可能永远这么做,因为我每天玩的游戏盘数有限。我每天至多玩n盘游戏。那么,这个机智的计划在因为这一限制失败前,执行天数的数学期望是多少?值得注意的是,答案至少为1,因为我至少要玩一天才能发现计划失败了。


每天晚上独立,算一天晚上失败的概率

$f[i][j]$表示$i$局赢了$j$局.....

设失败概率$Q=\sum f[n][j]: \frac{j}{n}\le p$

然后加权上天数求期望,列出来发现是无穷级数.......

$Q+2Q(1-Q)+3Q(1-Q)^2....$

然后看白书,成功得到解法

好吧说个靠谱的:用那些数列求和的技巧把系数弄去,然后套公式

$\sum\limits_{i=1}^{\infty}x^{ik}=\frac{1}{1-x^k}$

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
const int N=;
const double eps=1e-;
inline int read(){
char c=getchar();int x=,f=;
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*f;
}
int n,m,k;
double p[N],f[N];
double Pow(double a,int b){
double re=1.0;
for(;b;b>>=,a*=a)
if(b&) re*=a;
return re;
}
int main(){
freopen("tribbles.in","r",stdin);
freopen("tribbles.out","w",stdout);
int T=read(),cas=;
while(T--){
n=read();k=read();m=read();
for(int i=;i<n;i++) scanf("%lf",&p[i]);
f[]=p[];
for(int i=;i<=m;i++){
f[i]=p[];
double po=;
for(int j=;j<n;j++) po*=f[i-],f[i]+=p[j]*po;
}
printf("Case #%d: %.7lf\n",++cas,Pow(f[m],k));
}
}

UVA概率练习[2]的更多相关文章

  1. UVA&&POJ离散概率与数学期望入门练习[4]

    POJ3869 Headshot 题意:给出左轮手枪的子弹序列,打了一枪没子弹,要使下一枪也没子弹概率最大应该rotate还是shoot 条件概率,|00|/(|00|+|01|)和|0|/n谁大的问 ...

  2. UVA 11427 (概率DP+期望)

    题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=35396 题目大意:每晚打游戏.每晚中,赢一局概率p,最多玩n局, ...

  3. uva 10056 - What is the Probability ?(概率)

    题目连接:uva 10056 - What is the Probability ? 题目大意:给出n和p以及m,表示有n个人在丢色子, 谁先丢到某个值就表示胜利,每个人丢到的胜利数值的概率都为p,问 ...

  4. uva 542 - France '98(概率)

    题目链接:uva 542 - France '98 题目大意:有16支球队比赛,给出16支球队的名称,然后给出16*16的表格,g[i][j] 表示i队胜j队的概率,问说16支球队获得总冠军的概率. ...

  5. UVA 11021 - Tribles(概率)

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=481&page=s ...

  6. UVa 10491 Cows and Cars (概率&广义三门问题 )

    10491 - Cows and Cars Time limit: 3.000 seconds http://uva.onlinejudge.org/index.php?option=com_onli ...

  7. [uva 11762]Race to 1[概率DP]

    引用自:http://hi.baidu.com/aekdycoin/item/be20a91bb6cc3213e3f986d3,有改动 题意: 已知D, 每次从[1,D] 内的所有素数中选择一个Ni, ...

  8. UVA 10828 - Back to Kernighan-Ritchie(概率+高斯消元)

    UVA 10828 - Back to Kernighan-Ritchie 题目链接 题意:给图一个流程图,有结点的流程,每次进入下一个流程概率是均等的,有q次询问,求出每次询问结点的运行期望 思路: ...

  9. uva 11722 - Joining with Friend(概率)

    题目连接:uva 11722 - Joining with Friend 题目大意:你和朋友乘火车,而且都会路过A市.给定两人可能到达A市的时段,火车会停w.问说两人能够见面的概率. 解题思路:y = ...

随机推荐

  1. 将数据按照gzip当时解压的工具类

    import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; impo ...

  2. 程序员听到bug后的N种反应,太形象了

    程序员的世界里,不止有代码,还有bug,bug,bug 当出现bug时,程序员们的反应是怎样的呢?

  3. HTML5 Canvas 数据持久化存储之属性列表

    属性列表想必大家都不会陌生,正常用 HTML5 来做的属性列表大概就是用下拉菜单之类的,而且很多情况下,下拉列表还不够好看,怎么办?我试着用 HT for Web 来实现属性栏点击按钮弹出多功能选框, ...

  4. html日历(3)

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  5. Linux chmod命令及权限含义

    对于一条权限赋值命令:sudo chmod  -R 764 ×××:我们必须了解其含义: (1)各字段含义:sudo chmod  -R(更改文件夹及其子文件夹)                    ...

  6. 刚装上最新node,npm install报这个错误!求ndoe大神解答!!!

    npm -v和node-v都可以打印出来但是 npm install就报错! 解决方法:网络问题,建议使用cnpm install命令安装npm,再运行npm run dev 命令

  7. 修改DeDe标签Pagelist分页样式,自定义分页样式

    我们在用dede仿站的时候,调用文章列表页的分页时,我们会用到: {dede:pagelist listitem="info,index,end,pre,next,pageno" ...

  8. destoon数据库表解释说明

    ----------------------------- 公司认证:vcompany 实名认证:vtarde ============================================ ...

  9. cuda纹理内存的使用

    CUDA纹理内存的访问速度比全局内存要快,因此处理图像数据时,使用纹理内存是一个提升性能的好方法. 贴一段自己写的简单的实现两幅图像加权和的代码,使用纹理内存实现. 输入:两幅图 lena, moon ...

  10. 【编程技巧】一些 NSArray 的基本操作代码例子

    /*---------------------------切分数组------------------------------*/ //从字符串分割到数组- componentsSeparatedBy ...