luogu#P1471. 方差

方差

题目背景

滚粗了的 HansBug 在收拾旧数学书,然而他发现了什么奇妙的东西。

题目描述

蒟蒻 HansBug 在一本数学书里面发现了一个神奇的数列,包含 NN 个实数。他想算算这个数列的平均数和方差。

输入格式

第一行包含两个正整数 N,MN,M,分别表示数列中实数的个数和操作的个数。

第二行包含 NN 个实数,其中第 ii 个实数表示数列的第 ii 项。

接下来 MM 行,每行为一条操作,格式为以下三种之一:

操作 111 x y k ,表示将第 xx 到第 yy 项每项加上 kkkk 为一实数。
操作 222 x y ,表示求出第 xx 到第 yy 项这一子数列的平均数。
操作 333 x y ,表示求出第 xx 到第 yy 项这一子数列的方差。

输出格式

输出包含若干行,每行为一个实数,即依次为每一次操作 22 或操作 33 所得的结果(所有结果四舍五入保留 44 位小数)。

5 5
1 5 4 2 3
2 1 4
3 1 5
1 1 1 1
1 2 2 -1
3 1 5

3.0000
2.0000
0.8000

提示

关于方差:对于一个有 nn 项的数列 AA,其方差 s2s^2 定义如下:

$$s^2=\frac{1}{n}\sum\limits_{i=1}^n\left(A_i-\overline A\right)^2 $$

其中 A\overline A 表示数列 AA 的平均数,AiA_i 表示数列 AA 的第 ii 项。

样例说明: | 操作步骤 | 输入内容 | 操作要求 | 数列 | 输出结果 | 说明 | | :----------: | :----------: | :----------: | :----------: | :----------: | :----------: | | 00 | - | - | 1 5 4 2 3 | - | - | | 11 | 2 1 4 | 求 [1,4]\left[1,4\right] 内所有数字的平均数 | 1 5 4 2 3 | 3.0000 | 平均数 =(1+5+4+2)÷4=3.0000=\left(1+5+4+2\right)\div 4=3.0000 | | 22 | 3 1 5 | 求 [1,5]\left[1,5\right] 内所有数字的方差 | 1 5 4 2 3 | 2.0000 | 平均数 =(1+5+4+2+3)÷5=3=\left(1+5+4+2+3\right)\div 5=3,方差 $=\left(\left(1-3\right)^2+\left(5-3\right)^2+\left(4-3\right)^2+\left(2-3\right)^2+\left(3-3\right)^2\right)\div 5=2.0000$ | | 33 | 1 1 1 1 | 将 [1,1]\left[1,1\right] 内所有数字加 11 | 2 5 4 2 3 | - | - | | 44 | 1 2 2 -1 | 将 [2,2]\left[2,2\right] 内所有数字加 1-1 | 2 4 4 2 3 | - | - | | 55 | 3 1 5 | 求 [1,5]\left[1,5\right] 内所有数字的方差 | 2 4 4 2 3 | 0.8000 | 平均数 =(2+4+4+2+3)÷5=3=\left(2+4+4+2+3\right)\div 5=3,方差 $=\left(\left(2-3\right)^2+\left(4-3\right)^2+\left(4-3\right)^2+\left(2-3\right)^2+\left(3-3\right)^2\right)\div 5=0.8000$ |

数据规模: | 数据点 | NN | MM | 备注 | | :----------: | :----------: | :----------: | :----------: | | 131\sim3 | N8N\le 8 | M15M\le 15 | - | | 474\sim7 | N105N\le 10^5 | M105M\le 10^5 | 不包含操作 33| | 8108\sim10 | N105N\le 10^5 | M105M\le 10^5 | - |