• UVA11427概率期望+独立重复事件


     1 /*UVA11427*/
     2 /*概率期望:
     3 独立重复事件A(p,n):
     4 p:一件事情发生的概率为p
     5 n:最多重复n次
     6 要求:1、q=成功次数/实验次数>p 结束实验;
     7 所求:n次实验后,q一直小于等于p
     8 
     9 初始思考:
    10 ans=1-补集;
    11 补集=p+(1-p)*p......这样不好控制,因为无法手动枚举出所有的情况
    12 
    13 优化:
    14 dp(i,j):发生i次实验,没有达成跳出条件,且发生了j次成功的概率
    15 dp(i,j)=d(i-1,j-1)*p+dp(i-1,j)*(1-p) 满足j/i<=p;
    16 p(A)=d(n,0)+d(n,1)+d(n,2)+d(n,3).....+d(n,i) i/n<=p
    17 ans=1/p(A)
    18 
    19 边界 :
    20 memset(dp,0);
    21 dp(0,0)=1;
    22 
    23 
    24 */
    25 #include<iostream>
    26 #include<stdio.h>
    27 #include<string.h>
    28 #include<algorithm>
    29 #include<stdlib.h>
    30 #include<math.h>
    31 #include<queue>
    32 #include<vector>
    33 #include<map>
    34 
    35 using namespace std;
    36 
    37 double dp[105][105];
    38 int main()
    39 {
    40     int t,pi,pj,n;
    41     double p;
    42     cin>>t;
    43 
    44     for(int cas=1;cas<=t; cas++)
    45     {
    46         scanf("%d/%d %d",&pi,&pj,&n);
    47         p=(pi+0.0)/pj;
    48         memset(dp,0,sizeof(dp));
    49         dp[0][0]=1.0;
    50         for(int i=1;i<=n;i++)
    51         {
    52             for(int j=0;j*pj<=pi*i;j++)//保证j/i<=pi/pj,这是一种技巧
    53             {
    54                 dp[i][j]=dp[i-1][j]*(1-p);
    55                 if(j-1>=0) dp[i][j]+=dp[i-1][j-1]*p;
    56             }
    57         }
    58         double pAns=0;
    59         for(int j=0;j*pj<=pi*n;j++) pAns+=dp[n][j];
    60         printf("Case #%d: %d
    ",cas,(int)(1/pAns));
    61 
    62     }
    63     return 0;
    64 }
  • 相关阅读:
    NetCore
    OAuth授权
    Vue混入:全局混入
    Vue作用域插槽:用作循环结构的模版
    Vue作用域插槽:基本用法
    Effect Hook
    State Hook
    表单组件中state依赖props
    Vue自定义指令
    Vue访问子组件实例或子元素
  • 原文地址:https://www.cnblogs.com/little-w/p/3570252.html
Copyright © 2020-2023  润新知