方差
题目背景
滚粗了的 HansBug 在收拾旧数学书,然而他发现了什么奇妙的东西。
题目描述
蒟蒻 HansBug 在一本数学书里面发现了一个神奇的数列,包含 $N$ 个实数。他想算算这个数列的平均数和方差。
输入输出格式
输入格式
第一行包含两个正整数 $N,M$,分别表示数列中实数的个数和操作的个数。
第二行包含 $N$ 个实数,其中第 $i$ 个实数表示数列的第 $i$ 项。
接下来 $M$ 行,每行为一条操作,格式为以下三种之一:
操作 $1$:`1 x y k` ,表示将第 $x$ 到第 $y$ 项每项加上 $k$,$k$ 为一实数。
操作 $2$:`2 x y` ,表示求出第 $x$ 到第 $y$ 项这一子数列的平均数。
操作 $3$:`3 x y` ,表示求出第 $x$ 到第 $y$ 项这一子数列的方差。
输出格式
输出包含若干行,每行为一个实数,即依次为每一次操作 $2$ 或操作 $3$ 所得的结果(所有结果四舍五入保留 $4$ 位小数)。
输入输出样例
输入样例 #1
5 5
1 5 4 2 3
2 1 4
3 1 5
1 1 1 1
1 2 2 -1
3 1 5
输出样例 #1
3.0000
2.0000
0.8000
说明
关于方差:对于一个有 $n$ 项的数列 $A$,其方差 $s^2$ 定义如下:
$$s^2=\frac{1}{n}\sum\limits_{i=1}^n\left(A_i-\overline A\right)^2$$
其中 $\overline A$ 表示数列 $A$ 的平均数,$A_i$ 表示数列 $A$ 的第 $i$ 项。
样例说明:
| 操作步骤 | 输入内容 | 操作要求 | 数列 | 输出结果 | 说明 |
| :----------: | :----------: | :----------: | :----------: | :----------: | :----------: |
| $0$ | - | - | `1 5 4 2 3` | - | - |
| $1$ | `2 1 4` | 求 $\left[1,4\right]$ 内所有数字的平均数 | `1 5 4 2 3` | `3.0000` | 平均数 $=\left(1+5+4+2\right)\div 4=3.0000$ |
| $2$ | `3 1 5` | 求 $\left[1,5\right]$ 内所有数字的方差 | `1 5 4 2 3` | `2.0000` | 平均数 $=\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$ |
| $3$ | `1 1 1 1` | 将 $\left[1,1\right]$ 内所有数字加 $1$ | `2 5 4 2 3` | - | - |
| $4$ | `1 2 2 -1` | 将 $\left[2,2\right]$ 内所有数字加 $-1$ | `2 4 4 2 3` | - | - |
| $5$ | `3 1 5` | 求 $\left[1,5\right]$ 内所有数字的方差 | `2 4 4 2 3` | `0.8000` | 平均数 $=\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$ |
数据规模:
| 数据点 | $N$ | $M$ | 备注 |
| :----------: | :----------: | :----------: | :----------: |
| $1\sim3$ | $N\le 8$ | $M\le 15$ | - |
| $4\sim7$ | $N\le 10^5$ | $M\le 10^5$ | 不包含操作 $3$|
| $8\sim10$ | $N\le 10^5$ | $M\le 10^5$ | - |