作为NOIP级的知识点,概率与期望算是比较困难的类型了。
但其实也不是无法解决的难题。
本文主要通过作者本人的刷题经历,对概率期望类题目进行总结。
有n根鞋带混在一起,每根鞋带有两个鞋带头。现在重复n次以下操作:随机抽出两个鞋带头,把它们绑在一起。求最终只形成一个环的概率?
依次考虑每一步操作,现在已经选出来了一个头,它必须和非它所在的链的另一个头绑在一起,才能得到合法方案。显然所有的鞋带头中,有且仅有一个和它在一条链上,所以成功的概率就是 剩下的鞋带头数−1剩下的鞋带头数 剩 下 的 鞋 带 头 数 − 1 剩 下 的 鞋 带 头 数 ,由于每次操作,会消去两个鞋带头,所以当前的鞋带头数=总的鞋带头数-操作次数*2。题目要求不允许失败,所以答案就是每一次成功概率的乘积。
在这道题目中,我们在每一步操作时,都计算出了当前的情况总数,并将其转化为概率的形式。
题意很简单,有一把左轮手枪(左轮都不知道的面壁去),已知子弹的分布,现在开了一枪,是空枪,现在有两种方案:1,直接再开一枪,2、随机从某个位置再开一枪。求使得下一发子弹也是空枪
这道题算是比较简单的条件概率:已知第一发没有子弹。解法很简单,随机开一枪概率为 空子弹子弹总数 空 子 弹 子 弹 总 数 ,再开一枪概率 连续的空子弹空子弹 连 续 的 空 子 弹 空 子 弹
这道题只是运用枚举法求概率的典型,价值不大。
题意:有A、B两种汉堡各n个,2n个人依次拿,若当前两种汉堡均有剩余,随机拿走某种的一个,否则只能拿走剩余的。现在求最后两个人拿到不同的汉堡的概率。
其实就是计算拿前2n-2个,到最后每种都还剩一个的概率。就是说,前2n-2个人中,有n-1个拿的是A种汉堡,剩余的拿的是B种汉堡,那么这样合法的方案就是 C(2n−2,n−1) C ( 2 n − 2 , n − 1 ) ,这时,再来看每一步能拿到我们计划中的状态的概率,由于对于所有合法方案,最后两类都有剩余,也就是说,之前每个人都有选择,那么每一个人拿到我们想要他拿到的概率即为 12 1 2 ,一共拿 2n−2 2 n − 2 步,所以最终答案就是 C(2n−2,n−1)22n−2 C ( 2 n − 2 , n − 1 ) 2 2 n − 2
题意:有k个大箱子,每个盒子里有 bi b i 个盒子,其中有 si s i 个盒子中有一个糖果。
现在每个人依次操作:选择一个能拿到糖果概率最大的箱子,从中随机打开一个盒子。现在求第k个人能拿到糖果的概率。
这道题可能乍一看觉得很简单,你可能会误以为对每个人而言,状态都是一样的。其实不然,由于每个人之前的人数不同,所以会对他的选择造成影响。比如下面这个例子:
现在又2个箱子,第一个箱子有3个盒子,2颗糖。第二个箱子有2个盒子,1颗糖。第一个人肯定选择第一个箱子,他有 23 2 3 的概率拿走一颗糖,还有 13 1 3 的概率不能拿走糖。那么下一次在这个箱子中能拿到糖的概率就变为了: 23×13+13×23=49 2 3 × 1 3 + 1 3 × 2 3 = 4 9 。这时第二个人就只能选第二个箱子了。
其实这个问题还是很简单。
首先,用优先队列存储每个箱子的信息,我们需要保存:这个箱子能拿到糖果的概率,这个箱子的盒子数。排列时按照概率从大到小,模拟每个人取糖果的过程,显然他只会从队首取,那么只需要更新一下队首的概率即可。
如何更新这个概率,我是推了一波公式推出来的结果,但lx大佬告诉了我一个更简单的推导方式:假设现在又m个盒子,能拿到糖的概率为p,由于每个盒子最多只有一个,所以现在有糖果的盒子期望数是m*p,那么有p的概率拿走一个,1-p的概率不拿走,所以更新后的答案就是 p∗m∗p−1m+(1−p)∗m∗pm=(m−1)∗pm p ∗ m ∗ p − 1 m + ( 1 − p ) ∗ m ∗ p m = ( m − 1 ) ∗ p m 。
lx大佬的方法巧妙地利用的期望的一些性质,使得推导过程变得极为简洁,所以推导概率时,巧用期望也是一种极好的方式。
题意:有n个人排成一列,每次前4个人玩一次游戏,每个人等概率获胜,获胜者留在队首,其余人按照原顺序排列到队位。当一个人连续胜利m次后,就成为赢家。现在求拍第k个位置的人获胜的概率。
n,m≤10 n , m ≤ 10
这题乍一看很复杂,因为失败者会到队尾去,也就是说有可能继续参加游戏,所以整个游戏过程就变得极为复杂。
但其实不需考虑这么多。由于题目要求第k个人获胜的概率,那么我们完全可以忽略其他无关人士的影响。有谁会对当前这个人的胜率造成影响呢?显然只有队首的那个人,因为最终获胜的人肯定在队首。所以我们可以借助DP解决。
DP[i][j]表示队首的人获胜了i次,此时排第j号位置的人的胜率。转移方程很简单,只不过会形成环,所以要用高消解决。前4个人的转移稍微复杂一点,其他人都是一样的。这里就不再赘述。
这道题的精髓在于,不需要考虑无关因素,就是说不需要考虑到底初始编号为几的人赢了,编号为几的人输了。只需要关心当前队首的人即可。并且借助了DP来解决问题,同时用了高消,强烈建议实现这道题。
期望题本质上和概率差不多,所以就少说一点题目了。
题意:有三个骰子,每个骰子有 ki k i 个面,当每个骰子的点数分别为a、b、c时,回到原点,否则前进点数之和的步数。求到达目标的期望掷骰子次数。
转移方程很好写
高消求期望
题意:有n首歌,每首歌有一个长度 ti t i ,同时有一个识别率 pi p i 表示每秒钟都有 pi p i 的概率识别出这首歌,当这首歌放完时,就一定能识别出这首歌。求能依次识别的歌的数量的期望。
设 dp[i][j] d p [ i ] [ j ] 表示在前i秒,刚好听完j首歌的概率。
转移需要优化。还要卡卡常(5000*5000可能会卡一卡),题目本身很简答,这里就不再多说。
总的来说,这类题目难度波动很大,有很恶心的,也有非常水的,也有看起来恶心其实水的,以及看起来水其实很恶心的(废话)。但其实做多了也不觉得恶心了,每道题概率期望那一部分都已渐渐成为套路,只是每道题各有各的特点而已。