zoukankan      html  css  js  c++  java
  • POJ 2096 Collecting Bugs[数学期望]

      为了理解期望DP做的第一道期望题。

      一共有s个子系统和n个bug,一次能找一个Bug,求出在s个子系统中发现n个Bug的期望次数。bug是无穷的,所以认为每次在每个系统找找到一个Bug的概率是相等的。

      这种题目基本都是设E(now)为从当前状态到达结束状态的期望,E(now)=∑E(x)p(x),x表示可以从now转移到的状态,p[x]表示转移到这个状态的概率。

     1 /*
     2 s个子系统,n个bug,
     3 e[i][j],在i个子系统中发现j个bug到达目标的期望,显然d[s][n]=0;
     4 e[i][j]可以转化成四种情况
     5 发现无用的bug             e[i][j]*(i/s)*(j/n)
     6 在一个新系统中发现新bug   e[i+1][j+1]*(1-i/s)*(1-j)/n)
     7 在一个新系统中发现旧bug   e[i+1][j]*(1-i/s)*(j/n)
     8 在一个旧系统中发现新bug   e[i][j+1]*(i/s)*(1-j/n)
     9 加起来 e[i][j]=e[i][j]*(i*j)/(s*n)+....+1
    10 移项   e[i][j]=(...+1)/(1-(i*j)/(s*n))
    11 最后d[0][0]即为所求
    12 */
    13 #include <string.h>
    14 #include <stdio.h>
    15 double e[1005][1005],div;
    16 int n,s;
    17 int main(){
    18     while(scanf("%d%d",&n,&s)!=EOF){
    19         e[s][n]=0,div=n*s;
    20         for(int i=s;i>=0;i--){
    21             for(int j=n;j>=0;j--){
    22                 if(i==s&&j==n)continue;
    23                 e[i][j]=(((s-i)*(n-j)*e[i+1][j+1]+(s-i)*j*e[i+1][j]+(n-j)*i*e[i][j+1])/div+1)/(1-i*j/div);
    24             }
    25         }
    26         printf("%.4f\n",e[0][0]);
    27     }
    28     return 0;
    29 }

     

  • 相关阅读:
    python反爬之js混淆-字符串映射
    How to Provide a Default Trace for a Cloud Application
    Reset Peak Used Memory
    SAP 课程
    note 1639578 and 1622837
    SAP License error
    SAP BASIS-System Move
    初识Agile(敏捷项目管理)
    SAP HANA升级
    SAP FIORI 部署
  • 原文地址:https://www.cnblogs.com/swm8023/p/2664927.html
Copyright © 2011-2022 走看看