看题解中没人用,想介绍一下
有一个有x项的数列X,一个有y项的数列Y
X和Y合并为一个有n项的数列Z
n=x+y
Zˉ=nxXˉ+nyYˉ
sZ2=n1(i=1∑x(Xi−Zˉ)2+i=1∑y(Yi−Zˉ)2)=n1(i=1∑x(Xi−Xˉ+Xˉ−Zˉ)2+i=1∑y(Yi−Yˉ+Yˉ−Zˉ)2)=n1(i=1∑x((Xi−Xˉ)2+2×(Xi−Xˉ)×(Xˉ−Zˉ)+(Xˉ−Zˉ)2)+i=1∑y((Yi−Yˉ)2+2×(Yi−Yˉ)×(Yˉ−Zˉ)+(Yˉ−Zˉ)2))=n1(i=1∑x(Xi−Xˉ)2+2i=1∑x(Xi−Xˉ)(Xˉ−Zˉ)+x(Xˉ−Zˉ)2+i=1∑y(Yi−Yˉ)2+2i=1∑y(Yi−Yˉ)(Yˉ−Zˉ)+y(Yˉ−Zˉ)2)
由于将上式化简得i=1∑x(Xi−Xˉ)=0i=1∑y(Yi−Yˉ)=0sX2=x1i=1∑x(Xi−Xˉ)2sY2=y1i=1∑y(Yi−Yˉ)2sZ2=nx(sX2+(Xˉ−Zˉ)2)+ny(sY2+(Yˉ−Zˉ)2)
通过这个公式,我们可以在线段树中直接存储均值和方差。并且在做区间加操作时对信息的修改非常简单(均值+k,方差不变)