zoukankan      html  css  js  c++  java
  • hihocoder [Offer收割]编程练习赛14 投掷硬币

    题目2 : 投掷硬币

    时间限制:10000ms
    单点时限:1000ms
    内存限制:256MB

    描述

    小Hi有一枚神奇的硬币。已知第i次投掷这枚硬币时,正面向上的概率是Pi。  

    现在小Hi想知道如果总共投掷N次,其中恰好M次正面向上的概率是多少。

    输入

    第一行包含两个整数N和M。

    第二行包含N个实数P1, P2, ... PN。  

    对于30%的数据,1 <= N <= 20  

    对于100%的数据,1 <= N <= 1000, 0 <= M <= N, 0 <= Pi <= 1

    输出

    输出一行一个实数表示恰好M次正面向上的概率。注意行末需要包含一个换行符' '。  

    输出与标准答案误差在0.001以内都被视为正确。

    样例输入
    2 1
    0.5 0.5
    样例输出
    0.500000
    //最裸的期望dp 
    //f[i][j]表示已经抛了i次有j次正面朝上的期望 
    #include<cstdio>
    using namespace std;
    const int N=1005;
    int n,m;
    double f[N][N],p[N];
    int main(){
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++) scanf("%lf",p+i);
        f[0][0]=1;
        for(int i=0;i<n;i++){
            for(int j=0;j<=m;j++){
                f[i+1][j+1]+=f[i][j]*p[i+1];
                f[i+1][j]+=f[i][j]*(1.0-p[i+1]);
            }
        }
        printf("%.6f",f[n][m]);
        return 0;
    }
  • 相关阅读:
    竞争冒险及其消除
    [C++]重复单词统计
    [C++]智能指针与常规new
    基于go的生产者消费者模型
    cin的返回对象
    为什么map对象不能使用stl中的sort函数
    opencv
    operator ->
    记一次源码分析
    iconfig1
  • 原文地址:https://www.cnblogs.com/shenben/p/6720023.html
Copyright © 2011-2022 走看看