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

    你可能感兴趣的文章
    poj 3628 Bookshelf 2
    查看>>
    Qt笔记——官方文档全局定义(一)Types数据类型
    查看>>
    POJ 3670 DP LIS?
    查看>>
    POJ 3683 Priest John's Busiest Day (算竞进阶习题)
    查看>>
    POJ 3988 Selecting courses
    查看>>
    POJ 4020 NEERC John's inversion 贪心+归并求逆序对
    查看>>
    poj 4044 Score Sequence(暴力)
    查看>>
    POJ 基础数据结构
    查看>>
    POJ 题目3020 Antenna Placement(二分图)
    查看>>
    Poj(1797) Dijkstra对松弛条件的变形
    查看>>
    SpringBoot为什么不需要xml配置文件?
    查看>>
    POJ--2391--Ombrophobic Bovines【分割点+Floyd+Dinic优化+二分法答案】最大网络流量
    查看>>
    Qt笔记——SQLite初探QSqlDatabase QSqlQuery
    查看>>
    POJ-1163-The Triangle
    查看>>
    POJ-Fence Repair 哈夫曼树
    查看>>
    poj1061 - 同余方程,二元一次不定方程
    查看>>
    Qt笔记——SQLite再探
    查看>>
    poj1068Parencodings
    查看>>
    poj1182(带权并查集)
    查看>>
    POJ1182(带权并查集)
    查看>>