进球数--概率/数学

  • 题目
    • 描述
    • 输入格式
    • 输出格式
    • 输入/输出例子
      • 输入
      • 输出
    • 提示
  • 题意
  • 解题思路
    • Code1(质数)
    • Code2(合数)

题目

描述

中超继续进行,广州恒大和北京国安马上开赛了,比赛持续90分钟,为了分析方便,我们把5分钟作为一个时间片,那么比赛会进行18个时间片。在每一个时间片内,恒大踢进1球概率百分比都是A%,国安踢进1球概率都是B%。当比赛结束后,两支球队当中,至少有一支球队的进球数是质数的概率是多少?


输入格式

第一行,一个整数R,表示有R组测试数据。1 <= R <= 10。
每组测试数据格式:
第一行,A和B。 0 <= A <= 100, 0 <= B <= 100。

输出格式

共R行,每行一个实数,表示概率。

输入/输出例子

输入

3
50 50
100 100
12 89

输出

0.5265618908306351
0.0
0.6772047168840167

提示

本题只需算得出结果即可,无需在意保留小数点后几位的问题。


题意

在这场中超比赛中,把比赛分为18个时间片
广州恒大和北京国安在每个时间片踢进1球的概率百分比分别为A%和B%
求在18个时间片内至少有一支球队的进球数是质数的概率。

解题思路

本题要求出在18个时间片至少有一支球队的进球数是质数概率
因为两支队伍分别在每个时间片内都最多只能踢进1球,这场比赛只有18个时间片,故两支队伍分别最多只能踢进18球
如果一支球队的进球数为质数,那么这支队的进球数只能是2、3、5、7、11、13、17这些小于等于18的质数

根据题意,我们可以使用两个动态dp解决这个问题。
这两个dp分别表示广东恒大和北京国安前 i 个时间片中踢进 j 个球的概率

公式:
h[i][j] = h[i-1][j] + h[i-1][j-1]
g[i][j] = g[i-1][j] + g[i-1][j-1]
h[i][j] 表示广东恒大在前 i 个时间片中踢进 j 个球的概率数
g[i][j] 表示北京国安在前 i 个时间片中踢进 j 个球的概率数

如果讨论广东恒大的进球数的概率
恒大的进球数概率为18个时间片中踢进的球的个数为质数的总和,即 Count = h[18][2] + h[18][3] + h[18][5] + … + h[18][17]
若也单独讨论北京国安(用Ans表示)的进球数的概率,与恒大的计算方法同理
再把恒大和国安的概率相加便可;

这样的思路看上去好像没什么问题了,但你就以为这么做完事了?
错!这是只完成了整个程序的90%;
仔细一查,便可发现我们在计算时只讨论了恰好 有一支球队的进球数为质数的概率,却忽略了题目中的“至少”二字,说明我们还要讨论两支球队的进球数都是质数的情况,所以我们刚刚所算得概率中有算重复的,因此需把重复的部分去掉,用乘法原理,即用广东恒大和北京国安的进球概率的减去恒大和国安进球概率的乘积
Sum = Count + Ans - Count * Ans。式A
( Count --恒大 ; Ans --国安 )

最后直接把公式中的 Count 和 Ans 代入式A计算中即可。

如果还没看懂的,可以继续帮你把题目划分为子问题解决,加深理解。
此处参考自 https://blog.csdn.net/bell041030/article/details/88906510 bell041030 的部分题解思路(有略删改)

根据题意,简化一下问题,我们先单独考虑一支球队进球数是质数的概率。(子问题)
继续简化问题,如果这支球队进球数为2(子问题),那么球队在18个时间片段内进2球的情况可以用01,即选和不选来表示,用组合数来计算,故有 C 18 2 C_{18}^{2} C182​ 种情况,
如下表所示:(表格清晰脉络)

情况\时间片段 1 2 3 4 5 6 16 17 18
1 1 1 0 0 0 0 0 0 0
2 1 0 1 0 0 0 0 0 0
17 0 0 0 0 0 0 1 0 1
18 0 0 0 0 0 0 0 1 1

注释:(1表示选,0表示不选)

在这18个时间片段中,只有2个时间片段进球其他时间片段不能进球的情况下才符合当前题意,而这种情况又有 C 18 2 C_{18}^{2} C182​ ​种,所以设进球概率为 P ( g o a l ) P(goal) P(goal),球队在18个时间片段内进2球这种情况的概率是:
C 18 2 C_{18}^{2} C182​ × \times × P ( g o a l ) 2 P(goal)^2 P(goal)2 × \times × P ( g o a l ) 16 P(goal)^{16} P(goal)16

那么是在18个时间片里进 i 个球的情况的概率:
C 18 i C_{18}^{i} C18i​ × \times × P ( g o a l ) i P(goal)^i P(goal)i × \times × P ( g o a l ) 18 − i P(goal)^{18-i} P(goal)18−i

可以用杨辉三角做预处理。

现在,我们回归到原题,求至少有一支球队的进球数为质数的概率,先分类讨论一下:

恒大进球数为质数,国安进球数为非质数
恒大进球数为非质数,国安进球数为质数
恒大进球数为质数,国安进球数为质数

综上所述,把三种情况相加起来就可以得出至少有一支球队的进球数为质数的概率了。
理解了不!

Code1(质数)

#include<bits/stdc++.h>
using namespace std;
int r,a,b,z[15]={0,2,3,5,7,11,13,17};
double f[25][25],g[25][25];
int main(){scanf("%d",&r);while(r--){scanf("%d%d",&a,&b);f[0][0]=g[0][0]=1;double Count=0,Ans=0,Sum=0;for(int i=1;i<=18;i++){for(int j=0;j<=i;j++){f[i][j]=f[i-1][j]*(100-a)*1.0/100;g[i][j]=g[i-1][j]*(100-b)*1.0/100;if(j==0) continue;f[i][j]+=f[i-1][j-1]*a*1.0/100;g[i][j]+=g[i-1][j-1]*b*1.0/100;}}for(int i=1;i<=7;i++)Count+=f[18][z[i]],Ans+=g[18][z[i]];cout<<Count+Ans-Count*Ans<<"\n";}return 0;
}

但是,除此之外还有一种更简单的方法。
至少有一支球队的进球数为质数的概率 = 1 - 两支球队进球数都是非质数(即合数)的概率即可。

Code2(合数)

#include<bits/stdc++.h>
using namespace std;
int r,a,b,c[25][25],z[15]={0,1,4,6,8,9,10,12,14,15,16,18};
double f[25],g[25],Ans=0;
void init(){for(int i=0;i<=18;i++){c[i][0]=1;c[i][i]=1;}for(int i=1;i<=18;i++)for(int j=1;j<i;j++)c[i][j]=c[i-1][j]+c[i-1][j-1];
}
signed main(){scanf("%d",&r);init();while(r--){scanf("%d%d",&a,&b);Ans=0;for(int i=0;i<=18;i++){double tmpf1,tmpf2;double tmpg1,tmpg2;tmpf1=tmpf2=tmpg1=tmpg2=1;for(int j=1;j<=i;j++)tmpf1*=a*0.01,tmpg1*=b*0.01;for(int j=1;j<=18-i;j++)tmpf2*=1.00-a*0.01,tmpg2*=1.00-b*0.01;f[i]=c[18][i]*tmpf1*tmpf2;g[i]=c[18][i]*tmpg1*tmpg2;}for(int i=0;i<=11;i++)for(int j=0;j<=11;j++)Ans+=f[z[i]]*g[z[j]];Ans=1.00-Ans;cout<<Ans<<"\n";}return 0;
}

进球数--概率/数学相关推荐

  1. 进球数 概率 组合数学

    进球数 题目描述 中超继续进行,广州恒大和北京国安马上开赛了,比赛持续90分钟,为了分析方便,我们把5分钟作为一个时间片,那么比赛会进行18个时间片.在每一个时间片内,恒大踢进1球的概率百分比都是A% ...

  2. jzoj4745-看电影【期望概率,数学】

    正题 题目大意 一个环,nnn个人. 每次随机选一个位置,把顺时针第一个踢掉.直到只剩下kkk个人,求第ididid个人留下的期望概率. 解题思路 首先我们考虑一个环,若第xxx的概率比第yyy号的概 ...

  3. 【Java】LeetCode 1227. 飞机座位分配概率——数学好一行解决

    有 n 位乘客即将登机,飞机正好有 n 个座位.第一位乘客的票丢了,他随便选了一个座位坐下. 剩下的乘客将会: 如果他们自己的座位还空着,就坐到自己的座位上, 当他们自己的座位被占用时,随机选择其他座 ...

  4. 一个五位数取前三位matlab,【有五个小球,分别是1,2,3,4,5号,有放回的从中取三次,每次取一个,...-前三后五取一颗-数学-关偈邓同学...

    概述:本道作业题是关偈邓同学的课后练习,分享的知识点是前三后五取一颗,指导老师为习老师,涉及到的知识点涵盖:[有五个小球,分别是1,2,3,4,5号,有放回的从中取三次,每次取一个,...-前三后五取 ...

  5. 数学传奇2——格林的风车

    每个到访诺丁汉市斯内顿地区的游客远远地就会看到一座巨大的砖式结构风车磨坊和它高高耸立的风轮.这座现在被用作科学中心的风车磨坊始建于十九世纪早期,1986年诺丁汉政府将其修复至可以运作,并对公众开放.除 ...

  6. 王幼军:拉普拉斯概率理论的历史研究

     拉普拉斯概率理论的历史研究 http://www.doc88.com/p-917707463935.html 绪论 一,研究的意义 从中国数学史研究的角度来说,拉普拉斯的概率理论的历史可以为我们 ...

  7. 四年级计算机上册计划书,小学四年级数学上册教学计划书

    无论在日常的生产和生活中,还是在涉及生存和发展的关键时刻,数学都起着非常重要的作用,在新世纪即将到来之前,科学技术和生产的发展对数学提出了空前的需求,我们必须把握时机增大投入,加强数学研究与数学教育, ...

  8. breeze源码阅读心得

    在阅读Spark ML源码的过程中,发现很多机器学习中的优化问题,都是直接调用breeze库解决的,因此拿来breeze源码想一探究竟.整体来看,breeze是一个用scala实现的基础数学库,bre ...

  9. 神经网络简史:BP算法后的又一突破—信念网络

    随着训练多层神经网络的谜题被揭开,这个话题再一次变得空前热门,罗森布拉特的崇高雄心似乎也将得以实现.直到1989年另一个关键发现被公布,现在仍广为教科书及各大讲座引用. 多层前馈神经网络是普适模拟器( ...

最新文章

  1. 如何让hierarchyviewer调试查看商业版真机上的应用
  2. WINCE6.0+S3C2443下ADC在电池驱动应用
  3. mysql noinstall_Windows 下noinstall方式安装 mysql 5.7.5 m15 winx64(推荐)
  4. DayDayUp之Job:牛客网—算法工程师—剑指offer之66道在线编程(解决思路及其代码)——41~66
  5. 利用函数wavread对语音信号进行采样_语音信号处理相关知识
  6. [DeeplearningAI笔记]卷积神经网络2.9-2.10迁移学习与数据增强
  7. python 数组写txt_python txt文件常用读写操作
  8. 工作182:表格渲染
  9. 属于python应用领域的有数据可视化_Python数据可视化
  10. 插入空行_如何一键插入表格空行,这个方法才最高级!
  11. .netframewor划时代的系统:纪念Vista发布5周年
  12. go 连接服务器 并存放图片_Go 在马蜂窝即时通讯服务建设中的实践
  13. asp.net在发送邮件时出现服务器响应为: You are not authorized to send mail, authentication is required 解决方案...
  14. 面向对象(OOP)五大基本原则
  15. php ruby 优缺点,php,python,ruby,perl的优缺点?
  16. webstorm破解方法(亲测可用)
  17. 天大18春在线考试计算机答案,天津大学期末考核18春学期《画法几何及工程制图》在线作业一全套习题答案...
  18. 中望3d快捷键命令大全_中望CAD快捷键全集
  19. 国产网页在线编辑器kindeditor的使用
  20. 实时操作系统概述(推荐) .

热门文章

  1. 7月书讯(上)| 读书开启下半年
  2. 关于农村土地确权系列博文的说明
  3. ie11 html元素操作,css - 在IE11中过滤html / body元素的灰度[重复] - 堆栈内存溢出
  4. 制作映像(dmg)文件详细步骤
  5. redux框架config.php远山汉化版
  6. Windows的.DLL文件详解
  7. 《Google软件工程之道》软件工程随想
  8. 第三方 - 收藏集 - 掘金
  9. 充满设计感的字体海报设计欣赏
  10. 近期工作上的一些感悟