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
");
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
",ans);
28         }
29     }
30     return 0;
31 }
“这些年我一直提醒自己一件事情,千万不要自己感动自己。大部分人看似的努力,不过是愚蠢导致的。什么熬夜看书到天亮,连续几天只睡几小时,多久没放假了,如果这些东西也值得夸耀,那么富士康流水线上任何一个人都比你努力多了。人难免天生有自怜的情绪,唯有时刻保持清醒,才能看清真正的价值在哪里。”
原文地址:https://www.cnblogs.com/Blogggggg/p/8493605.html