#ijpcvariance. [ijpc_variance]分散 (Variance)

[ijpc_variance]分散 (Variance)

背景

在统计中,方差是表示数据的散乱程度的一个数。

在数列a1,a2,a3,...,ana_1,a_2,a_3,...,a_n中:

  • 平均数m是指a1+a2+a3+...+ann\frac{a_1+a_2+a_3+...+a_n}n

  • 方差(σ^2)是指k=1nakm2\sum_{k=1}^n|a_k-m|^2

我想计算数列上的某个区间的方差。

课题

有个数列A0,A1,A2,...,An1A_0,A_1,A_2,...,A_{n-1}。首先通过init(N,A)init(N, A)给出A的初始值。

请实现以下过程

  • 过程init(N,A)init(N, A)

    • NN表示数排的长度。数列的每一项都有不同的整数编号,从00N1N-1

    • AA表示数列中各个项的整数排列。假定对于AA中的任何一个数AiA_i都满足 1Ai100001 \leq A_i \leq 10 000

最初在调用update(i,x)update(i, x)variance(i,j)variance(i, j)之前只调用该过程一次。这个过程没有返回值。

  • 过程update(i,x)update(i, x)

    • i表示数组数值变化项。0i<N0 \leq i<N

    • x表示变化后的第i项的值。0x100000 \leq x \leq 10000

    • 就是将AiA_i的值改成xx

这个过程被调用多次。一次调用对应于一次数列AA值的变化。这个过程没有返回值。

  • 函数variance(i,j)variance(i, j)

    • i表示想计算分散的区间开始的一项的下标。0i<N0 \leq i < N

    • j表示我想计算分散区间的最后一项的下标。ij<Ni \leq j < N

    • 就是计算当前数列中AiAjA_i-A_j的方差

这个过程被调用多次。当把从第i项到第j项的值(包括端点)。答案记得取整.

例子

N=3,A={0,12,6}N=3,A=\{0,12,6\}

首先,过程initinit由上述参数进行调用。然后,以任意顺序执行多个updateupdate过程或variancevariance函数的调用。以下是调用和正确的返回值的示例:

参数 返回值
variance(0,2)variance(0, 2) 24
variance(1,2)variance(1, 2) 9
update(2,0)update(2, 0)
variance(0,2)variance(0, 2) 32
variance(1,2)variance(1, 2) 36
update(1,11)update(1, 11)
variance(0,2)variance(0, 2) 26

** 输入格式 **

第一行一个整数NN,表示AA数组元素个数

第二行接下来NN个整数A0,A1,A2,..An1A_0,A_1,A_2,..A_{n-1}(用空格分隔),AiA_i表示第ii项的初始值

第三行一个整数MM,MM=P+QP+Q

第四至第M+3M+3行,第i+4i+4行输入整数Ti,Xi,YiT_i,X_i,Y_i(用空格分隔),Ti=0T_i=0表示调用update(Xi,Yi)update(X_i,Y_i),Ti=1T_i=1表示调用variance(Xi,Yi)variance(X_i,Y_i)

输出格式

对于每个variancevariance函数的调用,输出结果

数据规模

50%50\%的数据,1N1000,1P+Q10001 \leq N \leq 1000,1 \leq P+Q \leq 1000

50%50\%的数据,1N100000,1P+Q1000001 \leq N \leq 100000,1 \leq P+Q \leq 100000