区间方差

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目背景

出题人并没有能力写有趣的题面……

题目描述

对于一个长度为 nn 的序列 a1,a2,a3ana_1,a_2,a_3\cdots a_n,我们定义它的平均数 aa 为:

a=1ni=1naia=\frac{1}{n}\sum_{i=1}^{n}a_i

并定义它的方差 dd 为:

d=1ni=1n(aia)2d=\frac{1}{n}\sum_{i=1}^{n}(a_i-a)^2

现在给定一个长度为 nn 的序列 b1,b2bnb_1,b_2\cdots b_n。你需要支持两种操作。每种操作的格式为 c x y

c=1c=1,为修改操作,代表将 bxb_x 赋值为 yy

c=2c=2,为查询操作,代表查询 bxb_xbyb_y 的方差。

为了避免浮点数误差,请以分数取模形式输出结果(对 10000000071000000007109+710^9+7)取模)。

输入格式

第一行两个整数 n,mn,m,代表序列 bb 的长度为 nn,有 mm 个操作。

第二行 nn 个整数 bib_i,表示序列 bb 的初始值。

下面有 mm 行整数,每行格式为 c x y,含义如上文所示。保证所有操作合法。

输出格式

对于每个操作 2,输出一行。

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
0
250000002
666666672
250000003

提示

样例 1 解释

四次修改后,序列 bb 为:{1,2,3,4}\{1,2,3,4\}

区间 [1,1][1,1] 的方差为 00

区间 [1,2][1,2] 的方差为 14\frac{1}{4}44 的逆元为 250000002250000002

区间 [1,3][1,3] 的方差为 23\frac{2}{3}33 的逆元为 3333333363333333362×333333336modM=6666666722\times333333336\bmod M=666666672

数据规模与约定

  • 对于 50%50\% 的数据,n1000n\leq 1000m1000m\leq 1000
  • 对于 100%100\% 的数据,1n,m1×1051\leq n,m\leq 1\times 10^50bi1×1090\leq b_i\leq 1\times 10^91xn1\leq x\leq n。对于操作 1,0y1×1090\leq y\leq 1\times 10^9。对于操作2,xynx\leq y\leq n

线段树

Not Claimed
Status
Done
Problem
21
Open Since
2026-2-26 0:00
Deadline
2026-3-5 23:59
Extension
24 hour(s)