P1471 推导

P1471 推导

我们可以设

\[\begin{aligned} sum1[n] &= a[1] + a[2] + \cdots + a[n] \\ sum2[n] &= a[1]^2 + a[2]^2 + \cdots + a[n]^2 \end{aligned} \]

那么我们就可以表示出方差了

方差公式展开:

\[\begin{aligned} & \frac{\sum_{i=1}^n (a[i]-\bar{a})^2}{n} \\ =\ & \frac{(a[1]-\bar{a})^2+(a[2]-\bar{a})^2+\cdots+(a[n]-\bar{a})^2}{n} \\ =\ & \frac{a[1]^2+a[2]^2+\cdots+a[n]^2 - 2\bar{a}(a[1]+a[2]+\cdots+a[n]) + n\bar{a}^2}{n} \\ =\ & \frac{a[1]^2+a[2]^2+\cdots+a[n]^2}{n} - \frac{2\bar{a}(a[1]+a[2]+\cdots+a[n])}{n} + \bar{a}^2 \\ =\ & \frac{a[1]^2+a[2]^2+\cdots+a[n]^2}{n} - 2\bar{a}^2 + \bar{a}^2 \\ =\ & \frac{a[1]^2+a[2]^2+\cdots+a[n]^2}{n} - \bar{a}^2 \\ =\ & \frac{sum2[n]}{n} - \bar{a}^2 \end{aligned} \]

至于修改也很简单了

区间加展开:

\[\begin{aligned} & \sum_{i=1}^n (a[i] + x)^2 \\ =\ & (a[1] + x)^2 + (a[2] + x)^2 + \cdots + (a[n] + x)^2 \\ =\ & a[1]^2 + a[2]^2 + \cdots + a[n]^2 + 2x(a[1] + a[2] + \cdots + a[n]) + nx^2 \\ =\ & sum2[n] + 2x \cdot sum1[n] + nx^2 \end{aligned} \]

于是就可以用带 lazy 的线段树来解决

* 注意:优先级应该是要先处理 sum2,再处理 sum1

posted @ 2025-12-30 16:39  小林琴奈  阅读(2)  评论(0)    收藏  举报