「UOJ 299」「CTSC2017」游戏
题意
小 R 和小 B 玩了 \(n\) 局游戏,第一局小 R 获胜的概率是 \(p_1\),对于第 \(i(1<i\le n)\) 局,若第 \(i-1\) 局小 R 获胜,则小 R 获胜的概率为 \(p_i\),否则为 \(q_i\)
现在已经知道了若干局的胜负情况,求小 R 获胜次数的期望,在 \(m\) 次增加或删除已知条件后都输出答案
\(n,m\le 2\times 10^5\)
后面的游戏结果会影响前面的概率 = =
做法
钦定第 \(0\) 局小 R 获胜,第 \(n+1\) 局小 B 获胜
设第 \(i\) 局的结果为 \(x_i\):若 \(x_i=1\) 则表示小 R 获胜,若 \(x_i=0\) 则表示小 B 获胜
考虑在确定了一些位置的情况下求第 \(k\) 个位置的概率
这只和 \(k\) 两侧最近的确定的位置有关
形式化地,找到最大的 \(l(l<k)\) 和最小的 \(r(r\ge k)\),即 \(P(x_k=1|x_l,x_r)\)
而
\[ \begin{aligned} P(x_k=1|x_l,x_r) = & \frac{P(x_k=1,x_l,x_r)}{P(x_l,x_r)} \\ = & \frac{P(x_k=1,x_r|x_l)\times P(x_l)}{P(x_r|x_l)\times P(x_l)} \\ = & \frac{P(x_k=1,x_r|x_l)}{P(x_r|x_l)} \end{aligned} \]
分母即确定了 \(l\) 处的值 \(x_l\) 后,\(r\) 处的值为当前 \(x_r\) 的概率,可以简单求得
分子部分即在上述条件中钦定 \(x_k=1\) 后的概率
现在只有 \(x_l\) 的条件,于是可以递推
注意在有中间钦定的情况下,小 R 和小 B 获胜的概率之和不一定为 \(1\)
记 \(i\) 处小 R 获胜概率为 \(f_i\),小 B 为 \(g_i\)
用矩阵转移即
\[ (f_{i-1},g_{i-1}) \begin{bmatrix} p_i & 1-p_i \\ q_i & 1-q_i \end{bmatrix} = (f_i, g_i) \]
若在 \(k\) 处,由于钦定了 \(x_k=1\)
矩阵变成
\[ \begin{bmatrix} p_i & 0 \\ q_i & 0 \end{bmatrix} \]
现在对于相邻两个的确定位置 \(l,r\),计算 \((l,r]\) 这一段的答案,可以分治地维护一个区间的矩阵的积和钦定其中某个位置为 \(1\) 的所有方案
每次修改会改变三个区间
复杂度 \(\mathcal O(n+m\log n)\)
代码
1 |
|
「UOJ 299」「CTSC2017」游戏