博客
关于我
牛客网【每日一题】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/

    你可能感兴趣的文章
    PostgreSQL 10.0 preview sharding增强 - pushdown 增强
    查看>>
    PostgreSQL 10.0 preview 变化 - pg_xlog,pg_clog,pg_log目录更名为pg_wal,pg_xact,log
    查看>>
    PostgreSQL 10.1 手册_部分 II. SQL 语言_第 15章 并行查询_15.2. 何时会用到并行查询?...
    查看>>
    PostgreSQL 10.1 手册_部分 II. SQL 语言_第 9 章 函数和操作符_9.23. 行和数组比较
    查看>>
    PostgreSQL 10.1 手册_部分 III. 服务器管理_第 21 章 数据库角色
    查看>>
    Qt开发——网络编程UDP网络广播软件之服务器端
    查看>>
    Postgresql 12.9如何配置允许远程连接
    查看>>
    PostgreSQL 9.6 同步多副本 与 remote_apply事务同步级别 应用场景分析
    查看>>
    Postgresql CopyManager 流式批量数据入库
    查看>>
    PostgreSQL cube 插件 - 多维空间对象
    查看>>
    PostgreSQL Daily Maintenance - cluster table
    查看>>
    PostgreSQL on Linux 最佳部署手册
    查看>>
    PostgreSQL Oracle 兼容性之 - pipelined
    查看>>
    PostgreSQL Point-In-Time Recovery (Incremental Backup)
    查看>>
    postgresql Streaming Replication监控与注意事项
    查看>>
    postgresql 不需要付费_使用数据传输在PostgreSQL执行 外部连接运算符
    查看>>
    postgresql 主从配置_生产环境postgresql主从环境配置
    查看>>
    postgresql 函数&存储过程 ; 递归查询
    查看>>
    PostgreSQL 分组聚合查询中 filter 子句替换 case when
    查看>>
    PostgreSQL 同步流复制锁瓶颈分析
    查看>>