zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    联考20200520 T2 函数
    联考20200520 T1 石子游戏
    模拟赛T2 中继系统
    模拟赛T2 仙人掌毒题
    BZOJ3462 DZY Loves Math II
    20200129模拟赛T1 string
    BZOJ1316 树上的询问
    BZOJ4559 成绩比较
    JZOJ4238 纪念碑
    BZOJ 2648 世界树
  • 原文地址:https://www.cnblogs.com/ToTOrz/p/6207732.html
Copyright © 2011-2022 走看看