#edu2016. 期望 DP

期望 DP

解决期望问题使用定义法, 或者 DP 倒推的方式,当前为初始状态,距离目标还需要的步数为期望。

基本模型

逆推方式

fif_i 表示当前状态到达目标状态的期望,按照期望线性的定义,得到:

fi=pi,j×(fj+cost(i,j))f_i=\sum{p_{i,j} \times (f_j+cost(i,j))}

其中 jj 是状态 ii 下一个阶段状态。

特殊地,当 costcost 为定值 cc

$$f_i=\sum p_{i,j} \times f_j+c\times\sum{p_{i,j}}=\sum p_{i,j} \times f_j+c$$

顺推

fif_i 从起点走到状态 ii 的期望

fi=pj,i(fj+cost(j,i))f_i=\sum{p_{j,i}*(f_j+cost(j,i))}

其中 jjii 上一个阶段状态。

特殊情况,对于很多线性问题,上一个阶段 j=i1j=i-1 , 即从 i1i-1 转移到 ii ,可以得到

fi=fi1+pi1,icost(i1,i)f_i=f_{i-1}+ \sum{p_{i-1,i}*cost(i-1,i)}

经典问题

涂格子1

  • nn 个格子,每次随机涂一个,求涂 mm 次后期望涂色格子数期望。

    fif_i 表示涂完 ii 次后期望涂色格子数量。

    $f_i=f_{i-1}+\frac{f_{i-1}}{n}*0+\frac{n-f_{i-1}}{n}*1=(1-\frac{1}{n})*f_{i-1}+1$

涂格子2

  • nn 个格子,每次随机涂一个,求涂满 mm 个格子的期望次数。

    fif_i 表示当前涂了 ii 个格子,到涂满 mm 个格子期望次数

    fi=(fi+1+1)nin+(fi+1)inf_i=(f_{i+1}+1)*\frac{n-i}{n}+(f_i+1)*\frac{i}{n}

    fi=fi+1nin+fiin+1f_i=f_{i+1}*\frac{n-i}{n}+f_i*\frac{i}{n}+1

    得到 fi=ninfi+1+11inf_i=\frac{\frac{n-i}{n}*f_{i+1}+1}{1-\frac{i}{n}}

    fm=0,ans=f0f_m=0,ans=f_0

涂格子3

  • n(n20)n(n \le 20) 个格子,每次会涂一个格子,其中涂第 ii 个格子的概率是 pi(pi=1p_i(\sum{p_i}=1) , 求每个格子都被涂色的期望次数。

    因为涂到每个格子的概率不同,所以没法把“格子数量”当成一维状态,只能使用状压。

    fsf_s 表示涂格子的状态为 ss 时到涂满还需要的次数。

    fs=i=0n1pifs2i+1f_s=\sum_{i=0}^{n-1}{ p_i*f_{s|2^i}} + 1

    f2n1=0f_{2^n-1}=0


例. P4316 绿豆蛙的归宿

【题意简化】

给定 nn 个点 mm 条边的有向无环图,起点为 11 ,终点为 nn ,第 ii 条边的长度为 lil_i. 从起点出发能够到达所有的点,所有的点也都能到达终点。绿豆蛙从起点出发,走向终点。到达每一个顶点时,如果该结点有 kk 边出边,绿豆蛙可以选择任意一条边离开该点,并且走向每条边的概率为 1k\frac{1}{k}.

  • DAG 上求期望

例. CF518D IIya and Escalator

【题意简化】

nn 个人排成一列,每秒中队伍最前面的人有 pp 的概率走上电梯(一旦走上就不会下电梯),或者有 1p1−p 的概率不动。问你 TT 秒过后,在电梯上的人的期望。

(1n,t2000,0p1)(1 ≤ n, t ≤ 2000, 0 ≤ p ≤ 1)

  • 定义法求期望

例. atcoder abc263 E-Sugoroku 3

【题意简化】

一共有 NN 个格子编号 11NN。有一个人站在 11 号格子。

对于 i[1,N1]\forall i \in [1,N-1] 号格子有一个 Ai+1A_i + 1 面的骰子,写有 00AiA_i 这些数。如果他掷到了 jj,他将往前走 jj 格,走到 i+ji+j 号方格。

求走到 NN 号方格的期望次数。对 998244353998244353 取模。

$2 \le n \le 2\times 10^5,1 \le A_i\le n-i(1\le i \le n-1)$

例. POJ-2096 Collecting Bugs

【题意简化】

一个软件有 s(1000)s(\le 1000) 个子系统,会产生 n(1000)n(\le 1000) 种 bug。某人一天发现一个 bug,这个 bug 属于某种 bug 分类,也属于某个子系统。每个 bug 属于某个子系统的概率是 1s\frac{1}{s},属于某种 bug 分类的概率是 1n\frac{1}{n} 。求发现 nn 种 bug,且 ss 个子系统都找到 bug 的期望天数。

例. NOIP2016 换教室

【题意简化】

学校有 v(300)v(\le 300) 个上课地点,总 n(2000)n(\le 2000) 节课第 ii 节课同时在 ci(v)c_i(\le v)di(v)d_i(\le v) 教室讲(内容相同),所有上课地点之间路径长度已知,保证任意两个教室相互可达。

你有不超过 m(2000)m(\le 2000) 次申请从班级 cic_i 换到 did_i 上课, 申请成功的概率是 ki(0ki1)k_i(0\le k_i \le 1) ,代价是 cic_idid_i 的最短距离。 即正常情况在 cic_i 教室上课,第 ii 节课申请换教室,会有 kik_i 的概率换到 did_i 上课。

申请哪几门课程可以因在教室间移动耗费的体力值的总和的期望值最小,请求出这个最小值。

  • “线性dp+期望” 经典题

例. P1654 OSU!

【题意简化】

一共有 nn 次操作,每次操作只有成功与失败之分,成功对应 11 ,失败对应 00nn 次操作对应 11 个长度为 nn0-1 串。在这个串中连续的 xx11 可以获得 x3x^3 的分数,这 xx11 不能被其他连续的 11 所包含(也就是极长的一串 1)。最后得分就是每次获得的分数的总和。

现在给出 n(105)n(\le 10^5) ,以及每个操作的成功率 pi(1pi1)p_i(1\le p_i\le 1),请你输出期望得分,输出四舍五入后保留 1 位小数。

【分析】:

游戏长度与连续的 11 的长度有关

E(x)iE(x)_i 表示以 ii 结尾连击长度(连续 1 的后缀长度)的期望, E(x2)iE(x^2)_{i}ii 结尾连击数的平方的期望,E(f)iE(f)_iii 结尾总得分期望

$E(x)_i=(p_i)*(E(x)_{i-1}+1)+(1-p_i)*0=p_i(E(x)_{i-1}+1)$

期望只有线性性质,E(x2)E2(x)E(x^2)\ne E^2(x) , 只能推导:

$E(x^2)_i = p_i*E((x+1)^2)_{i-1}=p_i*(E(x^2)_{i-1}+2E(x)_{i-1}+1)$

假设第 ii 次操作成功,产生长度为 xx 的概率为 PxP_x , 那么对于每一个 xx ,对分数产生 (x+1)3x3=3x2+3x+1(x+1)^3-x^3=3x^2+3x+1 的贡献。 第 ii 次操作成功有 pip_i 的概率,可以让得分增加如上的贡献,有:

$E(f)_i=E(f)_{i-1}+p_i(\sum_{x=0}^{i-1}{P_x*(3x^2+3x+1)})$

由于 x=0i1Pxx2=E(x2)i1\sum_{x=0}^{i-1}P_x*x^2=E(x^2)_{i-1}Ex=0i1Pxx=E(x)i1E_{x=0}^{i-1}P_x*x=E(x)_{i-1} ,得到:

$E(f)_i=E(f)_{i-1}+p_i(3*E(x^2)_{i-1}+3*E(x)_{i-1}+1)$

例. CF280C Game on Tree

【题意简化】

给定一颗有根树,结点编号从 11n(1n105)n(1\le n \le 10^5) ,根结点为 11 。对于每次操作,等概率的选择一个尚未被删除的结点并将它及其子树全部删去。当所有结点被删除之后,游戏结束;也就是说,删除 11 号结点后游戏即结束。需要求出删除所有结点的期望操作次数,保留不少于 66 位小数。

例. P2221 HAOI2012 高速公路

例. P2473 [SCOI2008] 奖励关

例. P4550 收集邮票

例. P3239 [HNOI2015] 亚瑟王


带有后效性期望问题*

例. CF24D Broken robot

例. P3232 [HNOI2013] 游走

Luogu P4457 [BJOI2018]治疗之雨

HDU4418 Time Travel


学习完毕

{{ select(1) }}

  • YES
  • NO