• sgu 495. Kids and Prizes (简单概率dp 正推求期望)


    题目链接

    495. Kids and Prizes

    Time limit per test: 0.25 second(s)
    Memory limit: 262144 kilobytes
    input: standard
    output: standard




    ICPC (International Cardboard Producing Company) is in the business of producing cardboard boxes. Recently the company organized a contest for kids for the best design of a cardboard box and selected M winners. There are N prizes for the winners, each one carefully packed in a cardboard box (made by the ICPC, of course). The awarding process will be as follows:

    • All the boxes with prizes will be stored in a separate room.
    • The winners will enter the room, one at a time.
    • Each winner selects one of the boxes.
    • The selected box is opened by a representative of the organizing committee.
    • If the box contains a prize, the winner takes it.
    • If the box is empty (because the same box has already been selected by one or more previous winners), the winner will instead get a certificate printed on a sheet of excellent cardboard (made by ICPC, of course).
    • Whether there is a prize or not, the box is re-sealed and returned to the room.

    The management of the company would like to know how many prizes will be given by the above process. It is assumed that each winner picks a box at random and that all boxes are equally likely to be picked. Compute the mathematical expectation of the number of prizes given (the certificates are not counted as prizes, of course).

    Input

    The first and only line of the input file contains the values of N and M ().

    Output

    The first and only line of the output file should contain a single real number: the expected number of prizes given out. The answer is accepted as correct if either the absolute or the relative error is less than or equal to 10-9.

    Example(s)
    sample input
    sample output
    5 7
    
    3.951424
    
    sample input
    sample output
    4 3
    
    2.3125
    

    题意:

    有n个奖品放在n个盒子,进行m次选择,每次只能选则一个盒子,如果选到含有奖品的话就把盒子里奖品拿走,盒子始终仍留着。问最终得到到奖品数的期望值。

    分析:

    一看见求期望想逆推,但是发现逆推没办法写初始条件,这是因为取的次数不少无限的,

    只能取m次。

    d[i]代表到第i个人取到奖品数的期望,显然d[i]等于上一个人取到的奖品数加上这个人取到的奖品数,

    这个人取到的奖品数为1的概率为(n-d[i-1])/n,取到奖品数为0的概率为d[i-1]/n,即期望为

    d[i-1]+1*(n-d[i-1])/n+0*d[i-1]/n。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <cstdlib>
     5 #include <queue>
     6 #include <cmath>
     7 #include <algorithm>
     8 #define LL __int64
     9 const int maxn = 1e5+10;
    10 using namespace std;
    11 double d[maxn];
    12 
    13 int main()
    14 {
    15     int n, m, i, j;
    16     while(~scanf("%d%d", &n, &m))
    17     {
    18         d[1] = 1;
    19         for(i = 2; i <= m; i++)
    20         d[i] = d[i-1]+1.0*((double)n-d[i-1])/(double)n;
    21         printf("%.9lf
    ", d[m]);
    22     }
    23     return 0;
    24 }
  • 相关阅读:
    c#调用java
    Shell脚本之Crontab的格式
    windows安装的mysql中文乱码的坑
    要成为一个 Java 架构师得学习哪些知识?
    月薪 30K Java 程序员,需要掌握哪些技术?
    职场
    资源汇总
    SpringBoot布道系列 | 目录汇总 | 2019持续更新ing
    史上最简单的 SpringCloud 教程 | 终章
    SpringBoot 企业级核心技术学习专题
  • 原文地址:https://www.cnblogs.com/bfshm/p/4075805.html
Copyright © 2020-2023  润新知