概率期望 DP 题解合集
期望这东西学了一次忘了,再学一次过了两天又不会了。我是鱼。
故写此博客以便加深记忆及日后复习。
NOIP 前恶补期望(? 希望有用,RP++()
经典问题 1
某事件发生概率为 \(p\),则该事件首次发生的期望次数为 \(\frac{1}{p}\)。
证明 link 懒得打 latex
经典问题 2 SP1026 FAVDICE - Favorite Dice
三倍经验:lgP1291/UVA10288
设已经有 \(k\) 个面出现过。则出现一个新面的概率为 \(\frac{n-k}{n}\),由上题得出现期望次数为 \(\frac{n}{n-k}\)。
故答案为 \(\sum\limits_{i=0}^{n-1}\frac{n}{n-i}=nH_n\)。(H:调和级数)
CF1540B Tree Array
- 对于树上连通块问题先枚举树根。
考虑枚举每个点对 \((u,v)\) 对答案的贡献 (u<v)。
设 \(x=dep[u]-dep[LCA],y=dep[v]-dep[LCA]\),再设 \(g_{x,y}\) 表示第一个点需要走 \(x\) 步,第二个点需要走 \(y\) 步,且第一个点先走到的概率。
则 \(g_{i,j}=(g_{i,j-1}+g_{i-1,j})/2\) 。预处理即可。
ARC150D Removing Gacha
考虑点 \(u\) 期望被选了多少次,设 \(dep_u\) 为 \(x\)。
由经典问题 2 得,将从 \(u\) 到根节点这条链上的点选满期望需要 \(xH_x\) 次。
每次选到 \(u\) 的概率为 \(\frac{1}{x}\),那么在这个过程中 \(u\) 期望被选了 \(H_x\) 次。
答案即 \(\sum\limits_{i=1}^ndep_i\)。
连写带调用了一个小时的原因居然是把快速幂敲挂了,一直在检查后面,真服了。
CF850F Rainbow balls
光看懂题解看了一个小时/qd
钦定最后所有球的颜色为 \(x\)。设 \(f_i\) 表示已有 \(i\) 个球为给定颜色。
设 \(p\) 为选出两个球,第一个颜色为 \(x\),第二个颜色不为 \(x\) 的概率。则:
\]
\]
其中 \(v\) 为此步对答案的贡献,即在当前局面下 \(x\) 成为留到最后颜色的概率。(所以不是 1)
设 \(g_i\) 为有 \(i\) 个 \(x\) 时留到最后的概率。则有
\]
\]
\]
解得
\]
\]
移项,得
\]
\]
考虑边界,当 \(i=1\) 时不存在 \(f_0\),代入上式得
\]
显然 \(f_s=0\)。(我为啥这么显然的事想了半天
那么
\]
\]
将 \(f_2=2f_1-1\) 代入,得
\]
至此,已知 \(f_1\),\(f_2\),根据 \(f_{i+1}=2f_i-f_{i-1}-\frac{s-1}{s-i}\) 递推即可。
答案即为 \(\sum\limits_{i=1}^nf_{a_i}\)。
P2973 [USACO10HOL]Driving Out the Piggies G
终于在高斯消元求期望上迈出了从口胡到代码实现的第一步(?
设 \(f_i\) 为炸弹最后爆炸时在点 \(i\) 的概率。
那么 \(f_i=\sum f_j\times (1-\frac{p}{q})\times \frac{1}{d_j}\)。其中 \(d_j\) 表示点 \(j\) 的度数,且 \(i,j\) 之间有边。
当 \(i=1\) 时,另有 \(f_1=\frac{p}{q}+\sum f_j\times (1-\frac{p}{q})\times \frac{1}{d_j}\)。
高斯消元即可。
P1654 OSU!
我怎么又把期望忘干净了啊。我还会点啥啊。
类比一下高校进阶那个 B 题(? 为什么当时没写博客来着
维护一个 \(len\) 表示前面期望连续长度。
然后它假了。或许是因为 \(E(x^2)!=E(x)^2\)(?
所以还要维护 \(len^2\) 的期望。式子不贴了。
CF908D New Year and Arbitrary Arrangement
期望神仙题++。
设 \(f_{i,j}\) 表示 前面已经有 \(i\) 个 a,有 \(j\) 对 ab 的方案数。(这个状态设计好神仙,我也不知道怎么能想到qwq
设 \(A=\frac{pa}{pa+pb},B=\frac{pb}{pa+pb}\)。
那么转移就是 \(f_{i,j}=A\times f_{i+1,j}+B\times f_{i,j+i}\)。
边界条件 \(f_{i,j}=i+j+\frac{pa}{pb}(i+j \ge k)\)。
大致推导一下:
当 \(i+j\ge k\) 时,只要后面再出现一个 b 就会结束。所以最后一段是一串 a 加上一个 b。
根据经典结论 1 可知,b 期望第一次出现的时刻为 \(\frac{1}{B}=\frac{pa+pb}{pb}\)。那么期望出现 \(a\) 的个数为 \(\frac{pa+pb}{pb}-1=\frac{pa}{pb}\),即期望的 ab 对个数。
记搜实现即可。
由于 \(f_{0,0}\) 会转移到自己,我们从 \(f_{1,0}\) 开始转移。对答案没有影响。
CF749E Inversions After Shuffle
纯推柿子题,跟 DP 好像没啥关系。不过不知道该放在哪,所以也写在这篇博客里。
考虑重排前下标为 \((i,j)\) 的点对对答案的贡献。其中 \(i<j\)。
那么分为两种情况:
- \(i,j\) 都在选中的段内
设选中段为 \([l,r]\),则满足 \(l\in [1,i],r\in [j,n]\),易知全部可能的选法有 \(\frac{n(n+1)}{2}\) 种。那么选中的段满足此情况的概率为 \(\frac{2i(n-j+1)}{n(n+1)}\)。
\((i,j)\) 在随机重排后有 \(\frac{1}{2}\) 的可能构成逆序对,则 \((i,j)\) 对答案的贡献为 \(\frac{i(n-j+1)}{n(n+1)}\)。
这种情况的总贡献为
=\sum\limits_{i=1}^n\sum\limits_{j=1}^{n-i}\frac{ij}{n(n+1)}\\
=\sum\limits_{i=1}^n \frac{i}{n(n+1)} \times \frac{(n-i+1)(n-i)}{2}\\
=\sum\limits_{i=1}^n \frac{i(n-i+1)(n-i)}{2n(n+1)}
\]
- \(i,j\) 不都在选中段内
显然概率为 \(1-\frac{2i(n-j+1)}{n(n+1)}\)。
由于 \(i,j\) 不都在选中段内,重排后 \(i,j\) 的相对位置不变。则当 \(a_i>a_j\) 时,\((i,j)\) 对答案有贡献。
总贡献为 \(\sum \limits_{i=1}^n \sum\limits_{j=i+1}^n [a_i>a_j]\frac{n(n+1)-2i(n-j+1)}{n(n+1)}\)。
这个式子在树状数组求逆序对的同时维护一下就好了。
CF643E Bear and Destroying Subtrees
感觉不是第一次见这种 忽视精度误差 做法的题,但是没有想出来。该打。
在每条边有 \(\frac{1}{2}\) 概率断掉的情况下,可知不论什么形态,树的深度大于 \(60\) 的概率都是远小于 \(10^6\) 的,可以忽略不计。
所以我们只考虑深度不大于 \(60\) 的情况对答案的贡献。
设 \(f_{u,i}\) 表示子树 \(u\) 的深度不大于 \(i\) 的概率。
那么可以得到 \(f_{u,i}=\prod\limits_{v\in son_u} \frac{1}{2} (f_{v,i-1}+1)\)。
则 \(u\) 的子树深度期望就是 \(\sum\limits_{i=1}^{60} i(f_{u,i}-f_{u,i-1})\)。
显然 \(f_{u,60}\) 趋近于 \(1\),那么这个式可以化简等于 \(60-\sum_{i=1}^{59}f_{u,i}\)。
注意题里的深度是我们设的深度 \(-1\)。
当新建节点 \(u\) 时,它只对上面 \(60\) 个祖先的 \(f\) 值产生影响,依次修改即可。
概率期望 DP 题解合集的更多相关文章
- 【bzoj4832】[Lydsy2017年4月月赛]抵制克苏恩 概率期望dp
题目描述 你分别有a.b.c个血量为1.2.3的奴隶主,假设英雄血量无限,问:如果对面下出一个K点攻击力的克苏恩,你的英雄期望会受到到多少伤害. 输入 输入包含多局游戏. 第一行包含一个整数 T (T ...
- 【loj6191】「美团 CodeM 复赛」配对游戏 概率期望dp
题目描述 n次向一个栈中加入0或1中随机1个,如果一次加入0时栈顶元素为1,则将这两个元素弹栈.问最终栈中元素个数的期望是多少. 输入 一行一个正整数 n . 输出 一行一个实数,表示期望剩下的人数, ...
- 【BZOJ-1419】Red is good 概率期望DP
1419: Red is good Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 660 Solved: 257[Submit][Status][Di ...
- Codeforces - 1264C - Beautiful Mirrors with queries - 概率期望dp
一道挺难的概率期望dp,花了很长时间才学会div2的E怎么做,但这道题是另一种设法. https://codeforces.com/contest/1264/problem/C 要设为 \(dp_i\ ...
- Codeforces 908 D.New Year and Arbitrary Arrangement (概率&期望DP)
题目链接:New Year and Arbitrary Arrangement 题意: 有一个ab字符串,初始为空. 用Pa/(Pa+Pb)的概率在末尾添加字母a,有 Pb/(Pa+Pb)的概率在末尾 ...
- 概率期望dp
对于概率dp,我一直都弄得不是特别明白,虽然以前也有为了考试去突击过,但是终究还是掌握得不是很好,所以决定再去学习一遍,把重要的东西记录下来. 1.hdu4405 Description 在一个 \( ...
- [BZOJ4832]抵制克苏恩(概率期望DP)
方法一:倒推,最常规的期望DP.f[i][a][b][c]表示还要再攻击k次,目前三种随从个数分别为a,b,c的期望攻击英雄次数,直接转移即可. #include<cstdio> #inc ...
- LightOJ 1030 Discovering Gold (概率/期望DP)
题目链接:LightOJ - 1030 Description You are in a cave, a long cave! The cave can be represented by a \(1 ...
- 华南理工大学“三七互娱杯”程序设计竞赛 HRY and codefire(概率期望DP)
https://ac.nowcoder.com/acm/contest/874/A 题目:有两个账号 , 一开始都为0级 , 求任意一个账号升级到N的期望 要求:如果当前账号嬴了 , 就继续沿用当前的 ...
- [NOIP2016]换教室(概率期望$DP$)
其实吧我老早就把这题切了--因为说实话,这道题确实不难啊--李云龙:比他娘的状压DP简单多了 今天我翻以前在Luogu上写的题解时,突然发现放错代码了,然后被一堆人\(hack\)--蓝瘦啊\(ORZ ...
随机推荐
- 从钢铁行业数字化管控与超自动化融合,看华为WeAutomate能力进化
文/王吉伟 钢铁行业的数字化转型,历来都是值得探讨的热点话题. 2022年,我国粗钢产量10.13亿吨,占据了全球钢铁供给市场的半壁江山. 这组数据可谓非常抢眼,但仍旧难掩诸多企业的各种经营问题. 钢 ...
- [译]使用Python和Dash 创建一个仪表盘(上)
介绍 在数据科学和分析的领域,数据能力的释放不仅是通过提取见解的方式, 同时也要能通过有效的方式来传达见解.这就是数据可视化发挥见解的地方. 数据可视化是信息和数据的可视化呈现. 它使用可视化元素,如 ...
- PlayWright(二十)- Pytest之conftest文件
1.介绍与使用场景 conftest.py 这个是什么呢? 顾名思义,他就是一个文件,那这个文件是干什么用的呢? 在我们上文中,用了fixture函数是直接在用例的文件里定义的,那不能我们所有 ...
- Cilium 系列-7-Cilium 的 NodePort 实现从 SNAT 改为 DSR
系列文章 Cilium 系列文章 前言 将 Kubernetes 的 CNI 从其他组件切换为 Cilium, 已经可以有效地提升网络的性能.但是通过对 Cilium 不同模式的切换/功能的启用,可以 ...
- PHPstudy+Xdebug动态调试代码过程中遇到一分钟就超时问题的解决办法
环境是PhpStorm+Xdebug+WAMP 在实际调试的过程中 碰到了调试还没走完就自动结束的情况 很尴尬 查阅了相关文档资料 找到了解决方法 首先在php.ini中进行修改 我的配置文件地址在 ...
- LaZagne:一键抓取目标机器上的所有明文密码的神器
LaZagne 介绍 功能 LaZagne 是用于获取存储在本地计算机上的大量密码的开源应用程序. 每个软件都使用不同的技术(纯文本.API.自定义算法.数据库等)存储其密码.LaZagne 的作用就 ...
- 通过Proxy和Reflect实现vue的响应式原理
vue3通过Proxy+Reflect实现响应式,vue2通过defineProperty来实现 Proxy Proxy是什么 Proxy是ES6中增加的类,表示代理. 如果我们想要监听对象的操作过程 ...
- [ansible]建立ssh互信
创建密钥 # 创建基于rsa算法的密钥,也可以创建ed25519算法的密钥,性能比rsa高 # 一般直接回车即可 ssh-keygen -t rsa 少量建立互信 如果主机数不多的话,可以手动建立互信 ...
- 从数据库方向getshell方法总结
前提 拿到数据库权限,可以执行sql语句,或者进入到phpmyadmin界面,或pmd界面 phpstudy 对应phpmyadmin界面 phpmyadmin.php upupw 对应pmd界面 u ...
- docker 安装 Redis环境
一.Docker搜索redis镜像 命令:docker search <镜像名称> docker search redis 二.Docker拉取镜像 命令::docker pull < ...