概率
-
离散型随机变量:只有有限种可能值的随机变量
-
连续型随机变量:随机变量 x 的分布函数可以表示成一个非负可积函数 f(x) 的积分
-
对于同一样本空间下的互斥事件,
-
推论:对于全部的基本事件来说
-
条件概率:记表示在A事件下发生的前提下,B事件发生的概率,则指的是事件A和B同时发生的概率
-
全概率公式:若事件构成一个完备的事件且都有正概率,即且,有。
-
贝叶斯定理:
-
期望:设离散型随机变量x的分布为:,那么X的数学期望就是,期望具有线性性,
-
对于两个独立的随机变量X,Y来说,
我们考虑一下什么时候用概率dp什么时候用期望dp
对于一个题来说,我们只需要简单的概率操作,但是带权的话不是很好求权值。如果说状态是可以和概率进行绑定的,前置状态会不会有什么对之后的影响,就有很多是可以用概率DP进行求解的,如果 一个题目他的状态是和概率绑定的,但是这个概率并不一定在这个位置产生贡献的话,也是一般用的是期望dp。
(听课时知道的一个小trick):如果说对于一个满二叉树来说,我们在求这棵树上面两个点的lca时:由于我们可以在这棵树上面发现,要么是从根节点的左儿子走,要么是右儿子走,那么我们就可以吧这个数字表示成一个01序列,那么我们会发现,两个数字的01序列最前边一样的位置就是lca(很妙对吧,
倒推法是在进行期望dp的时候的一个很重要的优化方法,因为起点固定但是重点并不一定是固定的,那么在进行倒推的时候我们就可以直接求出来起点的贡献,然后就可以直接输出了就不需要求和了(也不需要求和的时候的一堆判断了
例题:
竞赛
给定n,总共有个人,刚开始的时候站成一排,相邻两个人进行对决,给定每个人和其他所有人对决获胜的概率,求谁的获胜概率更大
我们考虑对每一个人进行求解
表示第i轮比赛,j获胜的概率,那么我们会发现,我们并不知道j在第i轮会和谁打,但是我们可以知道j在第i轮可能会和谁打,并且我们在dp的时候可以知道和谁打架的概率,就是那个人在第i轮胜出的概率
那么转移方程不就出来了吗:然后就可以求出来了,然后对于每一个人来说比较一下就好了
奖励关
这是一道状压概率题目
还是挺简单的对吧
我们设状态表示第i个物品下落的时候,吃的物品的种类数的状态是j的期望收益
然后转移就比较明显了吧,对于每一个物品的种类进行一次转移就可以了
(虽说这个题是个紫色但是思维难度并没有那么大对吧
P5104 红包发红包
我们会发现第一个人获得的钱的期望就是
后面的人获得的钱的期望值就是
然后快速幂就好了
P1850 [NOIP2016 提高组] 换教室
很经典的一道题
我们首先考虑,如果说我们这个位置换,还是不换
那么这个位置有两个选择,但是上一个位置同样也是两个选择
那么其实总共应该是四个选择对吧(对于每一个阶段来说
那么我们就可以dp一遍求值了嘛:设置表示这个位置换还是不换
但是如果说换的话就需要判断一下能不嫩换成了,所以要乘上概率
我们看到了n的数据范围,我们就可以先用floyd处理任意两点之间的最短路
就完事了
P3830 [SHOI2012]随机树
第一问好说,我们会发现,设表示在有x个叶子节点的时候叶子节点平均深度
那么我们会发现,只要是多展开了一个节点,深度就会增加
那么就可以推了:
但是另一问不好做哦:
我们考虑如果说这棵树上面有i个节点,深度为j的时候应该怎么办
那么我们会发现,深度为j的地方才会增加深度但是别的地方并不会
那么我们设表示有i个叶子节点,并且深度为j的概率
我们会发现,,为什么会有后边的呢,是因为只要两边子树任何一个深度为j-1就可以转移了所以会有重复的情况发生,并且因为总共有i个叶子节点,所以并不知道会展开哪个,所以乘上了i-1分之一
答案就是
P1654 OSU!
太难了……这就是概率期望嘛
首先我们知道一件事情就是三次方的期望并不等于期望的三次方,所以我们并不能单纯的求出来期望长度然后三次方
我们会发现所以我们可以求出来平方和个位数的期望然后相加
期望贡献就是:
但是事实上他可以写成这个式子,更加方便理解:
前半部分就是这一位并不是o的贡献,后面是这一位是o的贡献
P4550 收集邮票
f数组表示现在已经取到了i张邮票,要取完剩下的邮票的期望次数
我们先求出一个f数组:很好推对吧
但是还要求g数组哦:
我们会发现,现在取了一张邮票,其实就相当于吧后面的邮票所有都加了1块钱
所以:
这就很自然对不对,然后化简一下递推就好了
CF908D New Year and Arbitrary Arrangement
我们会发现,如果说前面的a的数量加上已经有的ab的数量大于等于k了,我们在后面加一个b就直接完事了对吧
我们设表示前面已经有了i个a,j个ab停止后的期望长度
那么我们转移的时候就可以很自然了
当i+j>=k的时候
(倒推嘛
判断一下就好
P2081 [NOI2012] 迷失游乐园
基环树dp(恶心死我了,为什么总有毒瘤出题人愿意出基环树
一道基环树的概率题目
我们还是要先考虑一下并不是基环树的情况
我们考虑一个点,他要不然是向上走要不然是向下走,那么我们就分情况被
假如说它向下走,那么 期望长度不就是子树向下走加上这条边的长度之和的平均嘛
然后我们考虑向上走,向上走,只要不是根节点,就一定会再次向下走(排除根节点只有一个子树的情况
那么我们会发现,我们就是向上找到第一个往下走的点呗
然后考虑基环树的情况
我们也就是枚举基环树上面的点为根嘛
枚举一遍求一下就好了,但是由于在基环树上面,所以度数要增加2滴
并且说,基环树在环上是可以顺时针逆时针随便走的
然后走到一个点之后把他的down算上就是期望长度之一
P5249 [LnOI2019]加特林轮盘赌
我们会发现一件事情:死了一个人之后人的总数会减少欸(废话
那么在减少一个人的时候,总数就会减少,(就可以转移
如果没有减少一个人的话,就相当于是这个人到了最后一位,也可以转移
我们设总共剩下i个人,现在第j个人存活的概率
然后消元就好了(用所有概率相加等于1来消元
P2473 [SCOI2008] 奖励关
状压+概率期望(两个讨厌的东西拼在一起就变得更讨厌了
就记录一下当前的宝物种类已经吃了的状态状压进去,然后记录当前实在第几位
然后暴力转移就好了啊
P3750 [六省联考 2017] 分手是祝愿
我们先求出来最少需要多少次操作,那肯定是从大到小先判断一边
然后我们就假设一下f[i]表示现在最少还需要x次才可以(其实并不是最少,而是必须
那么我们会发现,随机选择出来一个按钮进行按的话,有可能按成对的,也有可能按成错的
那么我们的转移方程就会变成:
后面的东西是先错一次,然后再变成对的
那么就好说了,我们可以把f[i] 变成一个只与f[i+1]有关的式子
然后就可以递推了
注意不是一直递推到f[0]或者f[1]而是f[k]并且从cnt开始推哦
然后最后求一边和就好了
P3239 [HNOI2015]亚瑟王
这个题就求出来每一张卡被使用的概率,然后乘上权值
但是概率咋算(好难)(但是f[1]并不难算,
令表示在前i张卡中出了j张卡的概率,那么我们有个性质:
如果说前i张卡出了j张卡,那么有r-j+1轮有可能第i张卡发动,那j轮这张卡根本没有机会发动
那么
那么这张卡用过的概率
上面的式子就是说,前面i-1张用了j张的概率乘上这张用了的概率然后求和
(概率期望真**难啊