题目名称 2232. 方差
输入输出 variance.in/out
难度等级 ★★★
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 10
题目来源 Gravatarsyzhaoss 于2025-06-05加入
开放分组 全部用户
提交状态
分类标签
分块 线段树
分享题解
通过:1, 提交:1, 通过率:100%
Gravatarsyzhaoss 100 1.740 s 8.64 MiB C++
关于 方差 的近10条评论(全部评论)

2232. 方差

★★★   输入文件:variance.in   输出文件:variance.out   评测插件
时间限制:1 s   内存限制:128 MiB

【题目描述】

给定$n$个实数构成的序列$a$和$m$个操作,请你编程实现这些操作。

【输入格式】

第一行包含两个正整数 $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$ 位小数)。

【样例输入】

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

【数据规模与约定】

对于测试点$1\sim 3$,$n\leq 8, m\leq 15$。

对于测试点$4\sim 7$,保证不包含操作$3$。

对于所有测试点,$n,m\leq 10^5,-1000\leq a_i\leq 1000,1\leq x\leq y\leq n, -1000\leq k\leq 1000$。

【提示】

关于方差:对于一个有 $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$ 项。