• XidianOJ 1020 ACMer去刷题吧


    题目描述

    刷题是每个ACMer必由之路,已知某oj上有n个题目,第i个题目小X能做对的概率为Pi(0<=Pi<=1,1<=i<=n) 求小X至少做对k道题的概率

    输入

    第一行输入一个正整数t,(t<=20),表示有t组测试样例。 第二行输入正整数n,k,(1<=n,k<=1000) 第三行输入n个小数,分别为Pi(1<=i<=n,0<=Pi<=1),表示小X做对第i个题目的概率。

    输出

    输出小X至少做对k道题的概率,并换行(保留4位小数)
     
    --正文
    dp
    f[i][j] 为在做了i道的时候,做对j道的概率
    f[i][j] = f[i-1][j-1] * p[i] +f[i-1][j] * (1- p[i])
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    
    double pr[1001];
    double f[1001][1001];
    int main(){
        int time,T; 
        scanf("%d",&T);
        for (time=1;time<=T;time++){
            int n,k;
            scanf("%d %d",&n,&k);
            int i,j;
            for (i=1;i<=n;i++){
                scanf("%lf",&pr[i]); 
            }
            memset(f,0,sizeof(f));
            f[0][0] = 1;
            for (i=1;i<=n;i++){
                f[i][0] = f[i-1][0] * (1 - pr[i]);
                for (j=1;j<=i;j++){
                    f[i][j] = f[i-1][j-1]*pr[i] + f[i-1][j] * (1 - pr[i]);
                } 
            }
            double sum = 0;
            for (i=k;i<=n;i++){
                sum += f[n][i];
            }
            printf("%.4lf
    ",sum);
        } 
        return 0;
    }
  • 相关阅读:
    LOJ#6031. 「雅礼集训 2017 Day1」字符串
    LG P4768 [NOI2018] 归程
    LG P3250 [HNOI2016]网络
    BZOJ4644 经典傻逼题
    LG P4373 [USACO18OPEN]Train Tracking P
    CF1375H Set Merging
    LG P6541 [WC2018]即时战略
    CF1097G Vladislav and a Great Legend
    python学习笔记-基本概念
    python学习笔记十-文件操作
  • 原文地址:https://www.cnblogs.com/ToTOrz/p/6207732.html
Copyright © 2020-2023  润新知