浅谈概率与数学期望问题

前言

​ 在算法竞赛中,概率与数学期望的问题经常出现,大多数都要找出递推式子,在计算数学期望的时候,需要回忆起概率论中一个非常重要的公式:
E ( a X + b Y ) = a E ( X ) + b E ( Y ) E(aX+bY)=aE(X)+bE(Y) E(aX+bY)=aE(X)+bE(Y)
因为这个公式可以推广到若干变量的时候,所以在计算数学期望的时候,可以将最后要求的数学期望,转化为若干个事件的数学期望的和,这样就可以化简问题的复杂度,进而能够编写程序。

绿豆蛙的归宿

题意

​ 给定一个连通的有向无环图,每条边都有一个长度,每当青蛙在一个点时,等概率的走连出去的每一条边,问的是从1号点走到n号点期望的路径总长度

分析

​ 根据题意可知,连通的有向无环图,所以无论从图中的哪个点开始起步,最终一定都会到达n号点,所以可以将从每个点起步,最终到达n号点当作一个事件,分别计算从每个点起到达n号点的期望路径长度,那么最终的结果就是累加到1号点后的期望路径长度。因此,就需要拓扑排序,把从n往1走的点的顺序找出来,因为要计算某个点走到n号点的期望长度,首先要先全部计算出 它连出去的边所到达的点 去往n号点的期望路径长度,然后再分别加上连出去的边长的期望值(即 1 K ∗ 边长 \frac{1}{K}*边长 K1​∗边长),最后累加起来就是从该点去往n号点的期望路径长度,最后便可以计算出从1号点到n号点的总路径期望长度。

AC代码

#include <bits/stdc++.h>
using namespace std;
using LL = long long;int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int n, m;cin >> n >> m;vector<vector<pair<int, int> > > G(n + 1);vector<vector<pair<int, int> > > G1(n + 1);vector<int> in(n + 1);for (int i = 0; i < m; i++) {int u, v, c;cin >> u >> v >> c;G1[u].emplace_back(make_pair(v, c));G[v].emplace_back(make_pair(u, c));in[u]++;}vector<int> z;z.emplace_back(0);z.emplace_back(n);queue<int> q;q.push(n);while (!q.empty()) {int u = q.front();q.pop();for (auto v : G[u]) {if (in[v.first]) {in[v.first]--;if (in[v.first] == 0) {q.push(v.first);z.emplace_back(v.first);}}}}vector<double> dp(n + 1);for (int i = 2; i <= n; i++) {int sz = G1[z[i]].size();for (auto v : G1[z[i]]) {dp[z[i]] = dp[z[i]] + 1.0 * (v.second * 1.0 + dp[v.first]) / (1.0 * sz);}}cout << fixed << setprecision(2) << dp[1] << '\n';return 0;
}

扑克牌

题意

​ 给一副扑克牌,共54张( 13 ∗ 4 + 2 13*4+2 13∗4+2),随机打乱,从上到下依次抽取,如果是黑桃、红桃、梅花或者方块就放到对应的牌区里,问得到A张黑桃、B张红桃、C张梅花、D张方块需要翻开的期望牌数最小是多少,为什么是最小?因为大王和小王可以任意放到一个牌区里当作该牌区的牌,所以就是在大小王的选择上产生最小值。

分析

​ 首先解释什么是不可达输入状态,发现A、B、C、D的数据范围是 [ 0 , 15 ] [0,15] [0,15],但一副扑克牌中只有13张某一花色的,即便算上大小王也只能在某两种花色中出现14或者某种花色出现15,其他情况均不可能。然后再考虑每一次翻开的牌都有什么情况,不难分析出每次只能翻出黑桃、红桃、梅花、方块、小王或大王(废话)。因此每次如果抽出的是黑桃、红桃、梅花、方块中的一种,抽出的概率就是 13 − 抽出的花色数 牌堆剩余牌数 \frac{13-抽出的花色数}{牌堆剩余牌数} 牌堆剩余牌数13−抽出的花色数​,期望就是所有事件的累乘。那如果抽出的是小王或者大王,抽出的概率就是 1 牌堆剩余牌数 \frac{1}{牌堆剩余牌数} 牌堆剩余牌数1​,期望是抽出该张王牌后枚举放入四个花色中的一种后,所有事件的累乘的最小值。

AC代码

#include <bits/stdc++.h>
using namespace std;
using LL = long long;
const double INF = 1e20;
int A, B, C, D;
double f[15][15][15][15][5][5];
double dp(int a, int b, int c, int d, int x, int y) {if (a > 13 || b > 13 || c > 13 || d > 13) {return INF;}double &v = f[a][b][c][d][x][y];if (v >= 0) {return v;}int as = a + (x == 0) + (y == 0);int bs = b + (x == 1) + (y == 1);int cs = c + (x == 2) + (y == 2);int ds = d + (x == 3) + (y == 3);if (as >= A && bs >= B && cs >= C && ds >= D) {return v = 0;}int sum = a + b + c + d + (x != 4) + (y != 4);sum = 54 - sum;if (sum <= 0) {return v = INF;}v = 1;if (a < 13) {v += (13.0 - a) / sum * dp(a + 1, b, c, d, x, y);}if (b < 13) {v += (13.0 - b) / sum * dp(a, b + 1, c, d, x, y);}if (c < 13) {v += (13.0 - c) / sum * dp(a, b, c + 1, d, x, y);}if (d < 13) {v += (13.0 - d) / sum * dp(a, b, c, d + 1, x, y);}if (x == 4) {double t = INF;for (int i = 0; i < 4; i++) {t = min(t, 1.0 / sum * dp(a, b, c, d, i, y));}v += t;}if (y == 4) {double t = INF;for (int i = 0; i < 4; i++) {t = min(t, 1.0 / sum * dp(a, b, c, d, x, i));}v += t;}return v;
}
int main() {ios::sync_with_stdio(false);cin.tie(nullptr);cin >> A >> B >> C >> D;memset(f, -1, sizeof(f));double ans = dp(0, 0, 0, 0, 4, 4);if (ans > INF / 2) {cout << "-1.000\n";} else {cout << fixed << setprecision(3) << ans << '\n';}return 0;
}

浅谈概率与数学期望问题相关推荐

  1. 幼儿园案例经验迁移_浅谈在幼儿园数学教学中如何为迁移而教

    浅谈在幼儿园数学教学中如何为迁移而教 前言 培养能力.发展智力是我们教学的重要目标,而学习的迁移则可以说是检验教学是否达到这个目标的最可靠的指标.为迁移而教是当今教育界流行的一个很有吸引力的口号.但遗 ...

  2. 浅谈三次数学危机——费马大定理

    浅谈三次数学危机--费马大定理 19世纪末20世纪初,随着非欧几里得几何.无穷小分析等领域的迅速发展,数学界面临着前所未有的挑战.这场关于数学基础的争论,被称为"数学危机".数学危 ...

  3. 数学1——概率与数学期望

    数学1--概率与数学期望 本文作者frankchenfu,blogs网址http://www.cnblogs.com/frankchenfu/,转载请保留此文字. 1.什么是数学期望? 数学期望亦称期 ...

  4. 浅谈计算机辅助数学教学论文,论文浅谈对计算机辅助数学教学的认识.doc

    论文浅谈对计算机辅助数学教学的认识.doc Xx师范学院 本科生毕业论文(设计) 题 目 专 业 院 部 学 号 姓 名 指 导 教 师 答 辩 时 间 论文工作时间: 年 月 至 年 月 摘 要:计 ...

  5. 浅谈计算机辅助数学教学论文,论文浅谈对计算机辅助数学教学的认识精选.doc...

    论文浅谈对计算机辅助数学教学的认识精选 Xx师范学院 本科生毕业论文(设计) 题 目 专 业 院 部 学 号 姓 名 指 导 教 师 答 辩 时 间 论文工作时间: 年 月 至 年 月 摘 要:计算机 ...

  6. 计算机辅助应用论文,浅谈应用计算机辅助数学教学

    浅谈应用计算机辅助数学教学 应用计算机辅助数学教学,二者若能有机地结合,会很好地发挥计算机媒体在数学教学中的"特有功能". 随着计算机信息技术和网络科技的不断发展,计算机在学校教育 ...

  7. 《算法竞赛进阶指南》数论篇(3)-组合计数,Lucas定理,Catalan数列,容斥原理,莫比乌斯反演,概率与数学期望,博弈论之SG函数

    文章目录 组合计数 例题:Counting swaps Lucas定理 Cnm≡Cnmodpmmodp∗Cn/pm/p(modp)C_n^m\equiv C_{n\ mod\ p}^{m\ mod\ ...

  8. 容斥原理和概率与数学期望

    容斥原理就是全集减去其他不满足的集合的并集,E-(E1∪E2∪E3∪.....∪Ek)=E-E1-E2-E3-...+E1∩E2+E2∩E3..意思是奇数个的符号就是-,偶数个就是+,一般用二进制枚举 ...

  9. 浅谈对离散型随机变量期望的理解

    在看<程序员的数学2--概率统计>关于离散型随机变量的大数定律解释时,有两个概念一定需要弄明白: 随机变量的期望: 随机变量结果的平均值. 在<Probability and Sta ...

最新文章

  1. 十张图说明机器学习在S/4中的应用
  2. Java基础--二维数组
  3. 安徽师范大学计算机专业导师,安徽师范大学数学计算机科学学院导师介绍:罗永龙...
  4. 222. Count Complete Tree Nodes
  5. capslock键英语怎么读_刚开始读英文原版书该怎么做?商务英语专业有前途吗?...
  6. 数据结构0类模板的使用
  7. VS Code HtmlFindClass 插件介绍
  8. mysql load average_紧急求助:load average太高了!!
  9. php实现tcp连接的原理,PHP实现TCP实例
  10. 短网址缩短和还原综合源码
  11. android tab pageview,Android Fragment在ViewPager中到底经历了什么?
  12. 常用MySQL数据库命令总结
  13. pytorch---之halfTensor
  14. CSS布局:三栏布局,中间栏固定宽度,左右两边自适应
  15. 阿里云智能图像识别服务发布
  16. 惠威D1080带来精致听音感受
  17. IDEA打包jar包并运行
  18. 对知识推理的认识的相关论文
  19. 【业界新闻】浪潮高端存储系统技术发展及展望(上篇)
  20. 植物大战僵尸变态辅助开发系列教程(E语言实现和VC6实现)(中)

热门文章

  1. UE4基础动画包导出FBX格式动画文件(附CSDN下载)
  2. simulink仿真单相全控桥整流电路电阻负载(含仿真文件)
  3. 启动nginx报错问题(nginx: [emerg] bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socke
  4. java se7 与6_2017初学java是选java se7还是java se8好?
  5. 三个sata硬盘只能读取两个_电脑装了两个硬盘有一个读不出来是SATA接口的
  6. 《电脑编程技巧与维护》2011年第22期刊登出《DB Query Analyzer中的事务管理在DB2中的应用》...
  7. python安装AES库及使用
  8. 利用ESP8266模块实现远程用手机控制开关
  9. 中国网络安全相关政策法规(2020第一季度)
  10. Jmeter测试上传身份证图片base64编码接口