如何优化搜索引擎中的SS221101C.iiidx?

摘要:题目链接题目描述有一个长度为 (n) 的01序列,第 (i) 个位置有 (p_i) 的概率为1,对于上面的一段 (lsim r) 的区间,现在有两种计算方式((A,B,t) 都是给定的值):[text{基本分}=A

题目链接

题目描述

有一个长度为 \(n\) 的01序列,第 \(i\) 个位置有 \(p_i\) 的概率为1,对于上面的一段 \(l\sim r\) 的区间,现在有两种计算方式(\(A,B,t\) 都是给定的值):

\[\text{基本分}=A\times\sum_{i=l}^r s_i\\ \text{毗连分}=B\times(\sum_{i=l}^r s_i\cdot f(i))\\ f(i) = \begin{cases} s_i & i = l \\ f(i-1) + 1 & i \neq l \land S_i = 1 \\ f(i-1) \times t & \text{otherwise} \end{cases} \]

现在你需要支持两种操作,单点修改概率 和 区间求基本分与毗连分的和的期望。
\(n,q\le 5\times10^5\)

题解

有期望的线性性可以拆成基本分和毗连分两个分别算期望,基本分非常好算:

\[E[\text{基本分}]=E[A\times\sum_{i=l}^r s_i]=A\times\sum_{i=l}^r p_i \]

这个显然可以用树状数组维护。

毗连分比较困难:

\[E[\text{毗连分}]=B\times(\sum_{i=l}^r f(i)\cdot p_i) \]

考虑将其拆成贡献形式,我们发现 \(i,j(i\le j)\) 之间是一个只有 \(t\) 的一个若干次多项式,我们钦定 \(i,j\) 是1来统计答案,我们只考虑从 \(i\) 开始的 \(t\)\(j\) 的贡献,考虑在 \([i+1,j-1]\) 这段区间的数,如果为1,则贡献 \(\times 1\),否则可以 \(\times t\),于是枚举 \(i,j\) 统计贡献,可以写出这样的式子:

\[\sum_{i=l}^r\sum_{j=i+1}^rp_ip_j\prod_{k=i+1}^{j-1}g_k\\ g_k=p_k\times1+(1-p_k)\times t。 \]

附注:这里只考虑从当前的 \(i\)\(j\) 单项 \(t\) 的贡献,其他项的贡献在枚举其他 \(i,j\) 是自然会统计。

阅读全文