期望这东西学了一次忘了,再学一次过了两天又不会了。我是鱼。

故写此博客以便加深记忆及日后复习。

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\) 的概率。则:

\[p=\frac{i(s-i)}{s(s-1)}
\]
\[f_i=f_{i-1}p+f_{i+1}p+f_i(1-2p)+v
\]

其中 \(v\) 为此步对答案的贡献,即在当前局面下 \(x\) 成为留到最后颜色的概率。(所以不是 1)

设 \(g_i\) 为有 \(i\) 个 \(x\) 时留到最后的概率。则有

\[g_0=0,g_s=1
\]
\[g_i=g_{i-1}p+g_{i+1}p+(1-2p)g_i
\]
\[g_i-g_{i-1}=g_{i+1}-g_i
\]

解得

\[g_i=v=\frac{i}{s}
\]
\[f_i=f_{i-1}p+f_{i+1}p+f_i(1-2p)+\frac{i}{s}
\]

移项,得

\[f_i-f_{i+1}=f_{i-1}-f_i+\frac{s-1}{s-i}
\]
\[f_{i+1}=2f_i-f_{i-1}-\frac{s-1}{s-i}
\]

考虑边界,当 \(i=1\) 时不存在 \(f_0\),代入上式得

\[f_2=2f_1-1
\]

显然 \(f_s=0\)。(我为啥这么显然的事想了半天

那么

\[f_1=f_1-f_s=\sum\limits_{i=2}^s f_i-f_{i-1}
\]
\[=(s-1)(f_1-f_2)+(s-2)(s-1)
\]

将 \(f_2=2f_1-1\) 代入,得

\[f_1=\frac{(s-1)^2}{s}
\]

至此,已知 \(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=i+1}^n \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 题解合集的更多相关文章

  1. 【bzoj4832】[Lydsy2017年4月月赛]抵制克苏恩 概率期望dp

    题目描述 你分别有a.b.c个血量为1.2.3的奴隶主,假设英雄血量无限,问:如果对面下出一个K点攻击力的克苏恩,你的英雄期望会受到到多少伤害. 输入 输入包含多局游戏. 第一行包含一个整数 T (T ...

  2. 【loj6191】「美团 CodeM 复赛」配对游戏 概率期望dp

    题目描述 n次向一个栈中加入0或1中随机1个,如果一次加入0时栈顶元素为1,则将这两个元素弹栈.问最终栈中元素个数的期望是多少. 输入 一行一个正整数 n . 输出 一行一个实数,表示期望剩下的人数, ...

  3. 【BZOJ-1419】Red is good 概率期望DP

    1419: Red is good Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 660  Solved: 257[Submit][Status][Di ...

  4. Codeforces - 1264C - Beautiful Mirrors with queries - 概率期望dp

    一道挺难的概率期望dp,花了很长时间才学会div2的E怎么做,但这道题是另一种设法. https://codeforces.com/contest/1264/problem/C 要设为 \(dp_i\ ...

  5. Codeforces 908 D.New Year and Arbitrary Arrangement (概率&期望DP)

    题目链接:New Year and Arbitrary Arrangement 题意: 有一个ab字符串,初始为空. 用Pa/(Pa+Pb)的概率在末尾添加字母a,有 Pb/(Pa+Pb)的概率在末尾 ...

  6. 概率期望dp

    对于概率dp,我一直都弄得不是特别明白,虽然以前也有为了考试去突击过,但是终究还是掌握得不是很好,所以决定再去学习一遍,把重要的东西记录下来. 1.hdu4405 Description 在一个 \( ...

  7. [BZOJ4832]抵制克苏恩(概率期望DP)

    方法一:倒推,最常规的期望DP.f[i][a][b][c]表示还要再攻击k次,目前三种随从个数分别为a,b,c的期望攻击英雄次数,直接转移即可. #include<cstdio> #inc ...

  8. LightOJ 1030 Discovering Gold (概率/期望DP)

    题目链接:LightOJ - 1030 Description You are in a cave, a long cave! The cave can be represented by a \(1 ...

  9. 华南理工大学“三七互娱杯”程序设计竞赛 HRY and codefire(概率期望DP)

    https://ac.nowcoder.com/acm/contest/874/A 题目:有两个账号 , 一开始都为0级 , 求任意一个账号升级到N的期望 要求:如果当前账号嬴了 , 就继续沿用当前的 ...

  10. [NOIP2016]换教室(概率期望$DP$)

    其实吧我老早就把这题切了--因为说实话,这道题确实不难啊--李云龙:比他娘的状压DP简单多了 今天我翻以前在Luogu上写的题解时,突然发现放错代码了,然后被一堆人\(hack\)--蓝瘦啊\(ORZ ...

随机推荐

  1. 家人们,我把B站首页写出来了!!!

    在学习HTML5和CSS3的过程中,总是感觉没有一个完全自己做出来的页面,一直在各大网站上面寻找合适的适合自己去仿写的页面代码,奈何找了很久都没有找到,在CSDN上找的各种什么电商页面,小米商城页面之 ...

  2. Spring-Bean(三)

    Bean生命周期配置 init-method:指定类中的初始化方法名称 destory-method:指定类中销毁方法名称 Bean标签配置 <bean id="UserDao&quo ...

  3. 源码解析Collections.sort ——从一个逃过单测的 bug 说起

    本文从一个小明写的bug 开始,讲bug的发现.排查定位,并由此展开对涉及的算法进行图解分析和源码分析. 事情挺曲折的,因为小明的代码是有单测的,让小明更加笃定自己写的没问题.所以在排查的时候,也经历 ...

  4. 2021-7-6 Vue实现记事本功能

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script sr ...

  5. Builder 生成器模式简介与 C# 示例【创建型2】【设计模式来了_2】

    〇.简介 1.什么是生成器模式? 一句话解释:   在构造一个复杂的对象(参数多且有可空类型)时,通过一个统一的构造链路,可选择的配置所需属性值,灵活实现可复用的构造过程. 生成器模式的重心,在于分离 ...

  6. 利用文件包含漏洞包含ssh日志拿shell

    今天看文章学了一招,有包含漏洞无法传文件的时候用 目标服务器环境为ubuntu,ssh登录日志文件是/var/log/auth.log 找个Linux的环境执行ssh '<? phpinfo() ...

  7. 《VTK图形图像开发进阶》第1-2章——一个稍微复杂的VTK程序

    VTK概览 数据可视化主要是通过计算机图形学的方法,以图形.图像等形式清晰有效地传递.表达信息,VTK是数据可视化的工具包. VTK全称(Visualization Toolkit),即可视化工具包, ...

  8. [db2]数据备份与还原

    前言 备份还原db2数据库一般有两种方式,一种是使用db2 backup + db2 restore,另一种是db2move + db2look.前者备份的数据库文件不能使用后者的方式进行还原. 实例 ...

  9. 一键部署 Umami 统计个人网站访问数据

    谈到网站统计,大家第一时间想到的肯定是 Google Analytics.然而,我们都知道 Google Analytics 会收集所有用户的信息,对数据没有任何控制和隐私保护. Google Ana ...

  10. .NET Core多线 (5) 常见性能问题

    合集:.NET Core多线程温故知新 .NET Core多线程(1)Thread与Task .NET Core多线程(2)异步 - 上 .NET Core多线程(3)异步 - 下 .NET Core ...