概率论 习题

线段长度期望

线段 \([0,1]\) 中随机选两个点,求线段长度的期望

答案为

\[\begin{aligned} \int_0^1\int_0^1|x-p| \mathrm dp\,\mathrm dx=&\int_0^1x^2-x+\frac12\mathrm dx\\ =&\frac13x^3-\frac12x^2+\frac12 x\mid_0^1\\ =&\frac13 \end{aligned}\]

经典 马尔科夫链 问题

\(n\) 个点分别在 \(1\sim n\),每次 \(\frac12\) 的概率向左一格,\(\frac12\) 的概率向右一格,对于每个 \(2\le i\le n-1\),求出从 \(i\) 开始到达 \(n\) 处比到达 \(0\) 处更早的概率,\(n\le10^6\)

\(i\) 开始答案为 \(P_i\),则 \(\large{P_0=0,P_1=1,P_i=\frac{P_{i-1}+P_{i+1}}2}\)

可得 \(P_i-P_{i-1}=P_{i+1}-P_i\),即 \(P\) 为等差数列

因此 \(P_i=\frac in\)

剪刀石头布

剪刀石头布期望多少次才能赢一局

设答案为 \(x\),则 \(x=1+\frac13\cdot 0+\frac23x\),可得 \(x=3\)

CF280C Game on Tree

给定一棵 \(n\) 点的有根树,每次操作等概率选择一个未被删去的点,删去它和它所在的子树,求删空整棵树的期望时间,\(n\le10^5\)

\(u\) 会产生 \(1\) 的贡献当且仅当它到根的链上所有点中,它是第一个被选择的,其数量为 \(dep_u\)\(dep_1=1\)),因此答案为 \(\sum_{i=1}^n \frac1{dep_i}\)

时间复杂度 \(O(n)\)

代码

[ABC263E] Sugoroku 3

\(n\) 个格子,从第 \(i\) 个出发下一步等概率到达 \(i\sim i+a_i\),求从 \(1\) 出发到达 \(n\) 的期望次数,\(n\le2\times10^5\)

直接 \(dp\) 发现有环,将方程中的 \(dp_i\) 全部移到左边即可根据 \(dp_{i+1}\sim dp_{i+a_i}\) 求出 \(dp_i\),时间复杂度 \(O(n)\)

代码

[ABC189F] Sugoroku2

\(n\) 个格子,到达其中 \(k\) 个会直接回到 \(0\),否则会等概率移动到 \(i+1\sim i+m\),求从 \(0\) 开始坐标不小于 \(n\) 的期望次数或判断不可能到达,\(n,m\le10^5,k\le10\)

每个位置的答案都可以表示为 \(dp_i=a_idp_0+b_i\),这个容易倒序推出,最后会得到一个关于 \(dp_0\) 的一元一次方程,解出后判断即可,时间复杂度 \(O(n)\)

代码

[ARC114E] Paper Cutting 2

\(H\times W\) 的网格上 \((h_1,w_1)\)\((h_2,w_2)\) 为黑色,其余白色。设当前矩形为 \(h\times w\),则从 \(h+w-2\) 条网格线中等概率选择一条切开,若两个黑点被分开则结束,否则丢弃全白的一块,求期望步数,\(H,W\le10^5\)

期望步数等于每条线期望被切割次数之和,因为每条线只会切至多一次,因此这等于每条线被切割的概率之和

设黑点上下左右分别有 \(u,d,l,r\) 条分割线,分别计算贡献。显然形式基本相同,因此只考虑上方的贡献

\(u\) 条中从上到下第 \(i\) 条可以被切当且仅当它比其上方和两黑点之间的线先切开

两黑点之间有 \(h+w-2-u-d-l-r\) 条,设其为 \(t\)

则第 \(i\) 条被切的概率为它比这 \(t+i-1\) 条先切开,即这 \(t+i-1+1\) 条中第 \(i\) 条为最后被切开的,其概率为 \(\frac1{t+i}\)

若预处理逆元,则总时间复杂度 \(O(\max(H,W))\),可以用筛优化到 \({O\left(\frac{\max(H,W)^{3/4}}{\log\max(H,W)}\right)}\),但没有必要

代码

CF1523E Crypto Lights

一排 \(n\) 个灯,初始全灭,每次随机选择一个灭的打开,求第一次出现存在连续 \(k\) 个中有至少两个开了的情况的期望操作数,\(n\le10^5\)

\(f(i)\) 表示操作了 \(i\) 次还没结束的概率,则答案等价于 \(\sum_{i=0}^n f(i)\)

\(f(i)\) 可以直接计算(\(f(0)\) 需要特判),\(f(i)=\dfrac{C_{n-(k-1)(i-1)}^i}{C_n^i}\),其中分子为从连续 \(n\) 个中取出 \(i\) 个,满足任意连续 \(k\) 个中只取至多一个的方案数

时间复杂度 \(O(\sum n)\),但实际上 \(i\) 大于 \(O(\frac nk)\)\(f(i)\) 一定为 \(0\),因此可以优化到 \(O(\sum\frac nk)\)

代码

[ABC277G] Random Walk to Millionaire

一张 \(n\)\(m\) 边的图,点权为 \(0/1\),初始等级为 \(0\),位于 \(1\)\(k\) 次行走,先等概率走一条出边,若到达的点权值为 \(0\),则等级加一,否则令收益增加等级的平方,求期望收益,\(n,m,k\le3000\)

显然走过的路径一定为一个 \(0/1\)

可以分别记录到当前为止,等级的零次方的期望,等级的一次方的期望,等级的两次方的期望(期望都要乘以到当前位置的概率),统计收益

时间复杂度 \(O((n+m)k)\)

代码

CF838D Airplane Arrangements

\(n\) 个位置,\(m(\le n)\) 个人依次上来,每人等选择一个位置,选择向前或向后。若其选择的位置已经有人,则按选择的方向找到下一个没人的坐下,若没找到则方案不合法。求合法方案数。\(m,n\le10^6\)

增加一个位置,编号 \(n+1\),将首尾连成一个圈

则合法等价于位置 \(n+1\) 没有人

若一开始可以选择 \(n+1\) 位置作为目标,则合法方案数不变(增加的一部分一定全部不合法)

问题转化为一个 \(n+1\) 点的圈,\(m\) 个人依次选择目标和方向并顺时针/逆时针坐下来,最后 \(n+1\) 号位置没人的方案数(不需要考虑有人跨过 \(n+1\) 号位置的情况,因为此时其一定不合法)

总方案数为 \((2(n+1))^m\),其中 \(n+1\) 号位置有人的占 \(\frac m{n+1}\)(一共 \(S\) 种,共计 \(S\cdot m\) 个被占的位置,而总位置有 \(S(n+1)\) 个,被占的比例为 \(\frac m{n+1}\),而且这个比例一定是均匀的,因此 \(n+1\) 号被占的方案数占总方案数的比例为 \(\frac m{n+1}\)),答案为 \((1-\frac m{n+1})(2n+2)^m\),时间复杂度 \(O(\log mod+\log m)\)

代码

树上随机游走

一棵 \(n\) 个点的树,对于节点 \(2\sim n\),求出其游走到 \(1\) 的期望时间

\(dp_i\) 表示 \(i\) 第一次走到其父亲的期望时间,则其游走到 \(1\) 的时间为其到根的链上的 \(dp\) 之和

\(N(i)\)\(i\) 的邻居集合,有转移:

\[{\begin{aligned} dp_i=&1+\frac{\sum_{j\in N(i),j\ne fa_i}(dp_j+dp_i)}{|N(i)|}\\ =&1+\frac{(|N(i)|-1)dp_i+\sum_{j\in N(i),j\ne fa_i}dp_j}{|N(i)|}\\ =&1+dp_i-\frac{dp_i-\sum_{j\in N(i),j\ne fa_i}dp_j}{|N(i)|}\\ \end{aligned}}\]

可得

\[{\begin{aligned} 1=&\frac{dp_i-\sum_{j\in N(i),j\ne fa_i}dp_j}{|N(i)|}\\ |N(i)|=&dp_i-\sum_{j\in N(i),j\ne fa_i}dp_j\\ dp_i=&|N(i)|+\sum_{j\in N(i),j\ne fa_i}dp_j\\ \end{aligned}}\]

于是可以先从下往上计算出 \(dp_i\),再从上往下计算出 \(f_i\),时间复杂度 \(O(n)\)

[AGC020 F] Arcs on a Circle

周长为 \(C\) 的圆,用 \(n\) 个圆弧状覆盖物去覆盖它(圆弧状覆盖物与圆的半径相同),长度为 \(L_i\sim L_n\),每个覆盖物将在圆上等概率选取一个实数位置覆盖上去,求整个圆被完全覆盖的概率,\(L\) 为整数,\(n\le6,C\le50\)

钦定最长的圆弧放在 \([0,L]\) 处,枚举剩余 \(n-1\) 个圆弧放置位置的小数部分的相对大小关系(有相同值的概率为 \(0\),虽然不是不可能发生,但不影响答案),一共 \((n-1)!\) 种可能

确定了小数部分相对大小后,转化为一个长为 \(n\times C\) 的圆,圆弧 \(i\) 只能放在 \(p_i+k\times n\) 的位置(\(p\) 为相对大小的排列),可以 \(O(2^n(nC)^2)\) 解决

总时间复杂度 \(O((n-1)!2^n(nC)^2)=O(n!2^nnC^2)\)

代码

题单

\(\text{vjudge}\): Probability Theory

参考

  1. \(\text{2024.12.4 Probability Theory(Easy).pdf \; \;by lanos212}\)
posted @ 2025-03-12 19:14  Hstry  阅读(20)  评论(0)    收藏  举报