区间方差
题目背景
出题人并没有能力写有趣的题面……
题目描述
对于一个长度为 $n$ 的序列 $a_1,a_2,a_3\cdots a_n$,我们定义它的平均数 $a$ 为:
$$a=\frac{1}{n}\sum_{i=1}^{n}a_i$$
并定义它的方差 $d$ 为:
$$d=\frac{1}{n}\sum_{i=1}^{n}(a_i-a)^2$$
现在给定一个长度为 $n$ 的序列 $b_1,b_2\cdots b_n$。你需要支持两种操作。每种操作的格式为 `c x y`。
若 $c=1$,为修改操作,代表将 $b_x$ 赋值为 $y$。
若 $c=2$,为查询操作,代表查询 $b_x$ 到 $b_y$ 的方差。
为了避免浮点数误差,请以分数取模形式输出结果(对 1000000007($10^9+7$)取模)。
输入输出格式
输入格式
第一行两个整数 $n,m$,代表序列 $b$ 的长度为 $n$,有 $m$ 个操作。
第二行 $n$ 个整数 $b_i$,表示序列 $b$ 的初始值。
下面有 $m$ 行整数,每行格式为 `c x y`,含义如上文所示。保证所有操作合法。
输出格式
对于每个操作 2,输出一行。
输入输出样例
输入样例 #1
4 8
0 0 0 0
1 1 1
1 2 2
1 3 3
1 4 4
2 1 1
2 1 2
2 1 3
2 1 4
输出样例 #1
0
250000002
666666672
250000003
说明
#### 样例 1 解释
四次修改后,序列 $b$ 为:$\{1,2,3,4\}$。
区间 $[1,1]$ 的方差为 $0$。
区间 $[1,2]$ 的方差为 $\frac{1}{4}$ 。$4$ 的逆元为 $250000002$。
区间 $[1,3]$ 的方差为 $\frac{2}{3}$。$3$ 的逆元为 $333333336$,$2\times333333336\bmod M=666666672$。
#### 数据规模与约定
- 对于 $50\%$ 的数据,$n\leq 1000$,$m\leq 1000$。
- 对于 $100\%$ 的数据,$1\leq n,m\leq 1\times 10^5$,$1\leq b_i\leq 1\times 10^9$,$1\leq x\leq n$。对于操作 1,$1\leq y\leq 1\times 10^9$。对于操作2,$x\leq y\leq n$。