UVA11021 Tribles

本文是刘汝佳《算法竞赛入门经典——训练指南》的读书笔记,详见原书 \(P140\).

知识点:  概率与期望

解题思路:

  我们先考虑一只麻球的情况,设 \(f(i)\) 为 \(i\) 天后所有麻球均死亡的概率。则

  \(f(0) = 0,\)

  \(f(1) = P_0,\)

  \(f(2) = P_0 + P_1 \cdot f(1) + P_2 \cdot f^{2}(1) + ... + P_{n-1} \cdot f^{n-1}(1),\)

  \(......\)

  \(f(m) = P_0 + P_1 \cdot f(m-1) + P_2 \cdot f^{2}(m-1) + ... + P_{n-1} \cdot f^{n-1}(m-1). \)

  由于每只麻球的生殖相互独立,故答案即为 \(f^{k}(m)\).

AC代码:

 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 double p[1010];
 5 double f[1010];
 6 int main(){
 7     int T,n,k,m;
 8     scanf("%d",&T);
 9     for(int t=1;t<=T;t++){
10         scanf("%d%d%d",&n,&k,&m);
11         for(int i=0;i<n;i++)
12             scanf("%lf",&p[i]);
13         printf("Case #%d: ",t);
14         if(m==0)    printf("0.0000000\n");
15         else{
16             f[1]=p[0];
17             for(int i=2;i<=m;i++){
18                 f[i]=0;
19                 double tmp=1;
20                 for(int j=0;j<n;j++){
21                     f[i]+=p[j]*tmp;
22                     tmp*=f[i-1];
23                 }
24             }
25             double ans=1;
26             for(int i=0;i<k;i++)    ans*=f[m];
27             printf("%.7lf\n",ans);
28         }
29     }
30     return 0;
31 }

 

转载于:https://www.cnblogs.com/Blogggggg/p/8493605.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值