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

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

文章目录

时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 131072K,其他语言262144K64bit IO Format: %lld

题目描述

你在打比赛,这场比赛总共有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位小数
示例1
输入
复制

0.20 0.30 0.37 0.40 0.45 0.50 0.57 0.60 0.75 0.76 0.77 0.830.85 0.88 0.90 0.94 0.100 0.104 0.105 0.107 0.115 0.120 0.122 0.1250.128 0.130 0.134 0.140 0.149 0.150 0.152 0.155 0.170 0.183 0.203 0.240

输出

复制

0.0000000.0000000.0000000.0000110.0001600.0015080.0096200.0419380.1241530.2437730.3019600.2124530.064424

题意

一开始看题目有点懵,12个题咋输出十三个答案,后来才反应过来,第i行表示解出i-1题的概率,意思是把做出0~12个题的概率依次输出,我原以为是第4题的概率

样例中前三个都是0.000000,并不是概率为0,而是保留6位小数,后面省略了

题解:

求第i题做出的概率可以正着求也可以逆着,逆着方便,先求做不出的概率,也就是q = ( 1 -a [ i ] ) *( 1 -b [ i ] ) * ( 1- c [ i ] ) ,(第i题我不会,左边也没听到,右边也没听到),做对的概率就是p= 1 - q

然后求 第i行表示解出i-1题的概率,典型的dp递推
dp[i][j]表示前i个问题,咱做出j个题的概率
由第i-1个题地推过来,第i个题有可能做对,有可能做错,加上对应的概率
dp[i][j]=dp[i-1][j](第i题没对)+dp[i-1][j-1](第i题对了)
确保都是对了j个题

初始化dp[0][0]=1(你一个题都没做当然都错了,所以错的概率是1)

代码

#include
#define forr(n) for(int i=1;i<=n;i++)using namespace std;const int maxn=15;double a[maxn],b[maxn],c[maxn];double dp[maxn][maxn];double q[maxn],p[maxn];int main(){ forr(12) cin>>a[i]; forr(12) cin>>b[i]; forr(12) cin>>c[i]; dp[0][0]=1;//初始化 forr(12)q[i]= (1-a[i])*(1-b[i])*(1-c[i]);//失败概率 forr(12)p[i]=1-q[i];//成功概率 forr(12){ dp[i][0]=dp[i-1][0]*q[i]; for(int j=1;j<=i;j++){ dp[i][j]=dp[i-1][j-1]*p[i]+dp[i-1][j]*q[i]; } } for(int i=0;i<=12;i++) printf("%.6f\n",dp[12][i]); return 0;} /* 0.20 0.30 0.37 0.40 0.45 0.50 0.57 0.60 0.75 0.76 0.77 0.830.85 0.88 0.90 0.94 0.100 0.104 0.105 0.107 0.115 0.120 0.122 0.1250.128 0.130 0.134 0.140 0.149 0.150 0.152 0.155 0.170 0.183 0.203 0.240 */

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

你可能感兴趣的文章
Netty 调用,效率这么低还用啥?
查看>>
Netty 高性能架构设计
查看>>
Netty+Protostuff实现单机压测秒级接收35万个对象实践经验分享
查看>>
Netty+SpringBoot+FastDFS+Html5实现聊天App详解(一)
查看>>
netty--helloword程序
查看>>
netty2---服务端和客户端
查看>>
【Flink】Flink 2023 Flink易用性和稳定性在Shopee的优化-视频笔记
查看>>
Netty5.x 和3.x、4.x的区别及注意事项(官方翻译)
查看>>
netty——bytebuf的创建、内存分配与池化、组成、扩容规则、写入读取、内存回收、零拷贝
查看>>
netty——Channl的常用方法、ChannelFuture、CloseFuture
查看>>
netty——EventLoop概念、处理普通任务定时任务、处理io事件、EventLoopGroup
查看>>
netty——Future和Promise的使用 线程间的通信
查看>>
netty——Handler和pipeline
查看>>
Vue输出HTML
查看>>
netty——黏包半包的解决方案、滑动窗口的概念
查看>>
Netty中Http客户端、服务端的编解码器
查看>>
Netty中使用WebSocket实现服务端与客户端的长连接通信发送消息
查看>>
Netty中实现多客户端连接与通信-以实现聊天室群聊功能为例(附代码下载)
查看>>
Netty中的组件是怎么交互的?
查看>>
Netty中集成Protobuf实现Java对象数据传递
查看>>