题意
给你一个长度为 $n$ 的链,链上的每条边有边权。
有 $m$ 次操作,对于每次操作:
C l r v
,表示将 $l$ 到 $r$ 之间的所有边的边权都加上 $v$。Q l r
表示在 $l$ 到 $r$ 上随机选两个不同的点,从 $a$ 到 $b$ 的路径上边权和期望是多少。
$1 \leq n, m \leq 10^5, -10^4 \leq v \leq 10^4$
题解
考虑从 $i$ 到 $i + 1$ 的这条边对答案的贡献,我们需要在 $i$ 的左边和 $i + 1$ 的右边分别选一个点,所以答案就是
$$\sum\limits_{i = l}^ra_i \times\left(i - l + 1\right) \times \left(r - i\right)$$
展开后整理可得
$$\left(r - lr\right) \times \sum\limits_{i = l}^ra_i + \left(r + l - 1\right) \times \sum\limits_{i = l}^ri \times a_i - \sum\limits_{i = l}^ri^2 \times a_i$$
使用线段树维护 $\sum\limits_{i = l}^ra_i$、$\sum\limits_{i = l}^ri \times a_i$、$\sum\limits_{i = l}^ri^2 \times a_i$ 即可。
对于修改:
$$\sum\limits_{i = l}^r\left(a_i + v\right) = v(r - l + 1) + \sum\limits_{i = l}^ra_i$$
$$\sum\limits_{i = l}^ri \times\left(a_i + v\right) = v \times \sum\limits_{i = l}^ri + \sum\limits_{i = l}^ri \times a_i$$
用等差数列求和公式算
$$\sum\limits_{i = l}^ri^2 \times\left(a_i + v\right) = v \times \sum\limits_{i = l}^ri^2 + \sum\limits_{i = l}^ri^2 \times a_i$$
用平方和公式算
因为是期望,所以答案要除以 $\binom{r - l + 1}2$