博客
关于我
牛客网【每日一题】5月19日题目精讲 比赛
阅读量:145 次
发布时间:2019-02-27

本文共 1430 字,大约阅读时间需要 4 分钟。

题意是说,你在参加一场比赛,这场比赛总共有12个题。对于第i个题,你的队伍有a[i]的概率解决它。如果解决不了呢?由于所有人讨论的都很大声,所以你有b[i]的概率从左边那个队那里听会这个题的做法,有c[i]的概率从右边那个队那里听会这个题的做法。请问最终你们队伍解出0-12题的概率分别是多少?

输入描述:第一行12个数表示a[1]到a[12]第二行12个数表示b[1]到b[12]第三行12个数表示c[1]到c[12]

输出描述:输出13行,第i行表示解出i-1题的概率,保留6位小数。

解题思路:

  • 首先计算每个题做对的概率p[i]和做错的概率q[i]。q[i] = (1 - a[i]) * (1 - b[i]) * (1 - c[i]),p[i] = 1 - q[i]
  • 使用动态规划来计算解出0到12题的概率。设dp[i][j]表示前i个题中解出j个的概率。初始化dp[0][0] = 1
  • 对每个题i,从j=0到i,计算dp[i][j] = dp[i-1][j] * q[i] + dp[i-1][j-1] * p[i]
  • 最后输出dp[12][0]到dp[12][12]
  • 代码:

    #include 
    using namespace std;int main() { const int maxn = 12; double a[maxn], b[maxn], c[maxn]; double dp[maxn + 1][maxn + 1]; // 初始化 dp[0][0] = 1.0; // 读取输入 for (int i = 1; i <= maxn; ++i) { cin >> a[i]; cin >> b[i]; cin >> c[i]; } // 计算每个题的成功概率和失败概率 for (int i = 1; i <= maxn; ++i) { double q = (1 - a[i]) * (1 - b[i]) * (1 - c[i]); double p = 1 - q; dp[i][0] = dp[i-1][0] * q; for (int j = 1; j <= i; ++j) { dp[i][j] = dp[i-1][j] * q + dp[i-1][j-1] * p; } // 如果j超过i,不可能 } // 输出结果 for (int i = 0; i <= maxn; ++i) { cout << fixed << setprecision(6); if (i == 0) { cout << "0.000000"; } else { cout << dp[12][i]; } } return 0;}

    输出结果:0.0000000.0000000.0000000.0000110.0001600.0015080.0096200.0419380.1241530.2437730.3019600.2124530.064424

    转载地址:http://xmwb.baihongyu.com/

    你可能感兴趣的文章
    promise总结
    查看>>
    Propel项目改为基于TensorFlow.js
    查看>>
    PyTorch-Tutorials【pytorch官方教程中英文详解】- 6 Autograd
    查看>>
    properties出现中文乱码解决方法(万能)
    查看>>
    Property 'submit' of object #<HTMLFormElement> is not a function
    查看>>
    property--staticmethod--classmethod
    查看>>
    propertyGrid
    查看>>
    propertyPlaceholderConfigurer读取配置文件
    查看>>
    PyTorch-Tutorials【pytorch官方教程中英文详解】- 5 Build Model
    查看>>
    proteus三输入与非门名字_proteus 元件名称对照表
    查看>>
    Protobuf - 语法、字段使用规则、注意事项
    查看>>
    protobuf —— 快速上手
    查看>>
    protobuf —— 认识和安装
    查看>>
    Protobuf 三个关键字required、optional、repeated的理解
    查看>>
    ProtoBuf 原理详解
    查看>>
    Protobuf 实例(java)
    查看>>
    ProtoBuf 实际应用(java)
    查看>>
    Protobuf 属性解释
    查看>>
    Protobuf 编译工具转换 Java 类
    查看>>
    protobuf使用详解
    查看>>