AT_ijpc_variance.分散 (Variance)
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
背景
在统计中,方差是表示数据的散乱程度的一个数。
在数列a1,a2,a3,...,an中:
-
平均数m是指na1+a2+a3+...+an
-
方差(σ^2)是指∑k=1n∣ak−m∣2。
我想计算数列上的某个区间的方差。
课题
有个数列A0,A1,A2,...,An−1。首先通过init(N,A)给出A的初始值。
请实现以下过程
-
过程init(N,A)
-
N表示数排的长度。数列的每一项都有不同的整数编号,从0到N−1。
-
A表示数列中各个项的整数排列。假定对于A中的任何一个数Ai都满足 1≤Ai≤10000
-
最初在调用update(i,x)或variance(i,j)之前只调用该过程一次。这个过程没有返回值。
-
过程update(i,x)
-
i表示数组数值变化项。0≤i<N。
-
x表示变化后的第i项的值。0≤x≤10000
-
就是将Ai的值改成x
-
这个过程被调用多次。一次调用对应于一次数列A值的变化。这个过程没有返回值。
-
函数variance(i,j)
-
i表示想计算分散的区间开始的一项的下标。0≤i<N
-
j表示我想计算分散区间的最后一项的下标。i≤j<N
-
就是计算当前数列中Ai−Aj的方差
-
这个过程被调用多次。当把从第i项到第j项的值(包括端点)。答案记得取整.
例子
N=3,A={0,12,6}
首先,过程init由上述参数进行调用。然后,以任意顺序执行多个update过程或variance函数的调用。以下是调用和正确的返回值的示例:
| 参数 | 返回值 |
|---|---|
| variance(0,2) | 24 |
| variance(1,2) | 9 |
| update(2,0) | 无 |
| variance(0,2) | 32 |
| variance(1,2) | 36 |
| update(1,11) | 无 |
| variance(0,2) | 26 |
输入格式
第一行一个整数N,表示A数组元素个数
第二行接下来N个整数A0,A1,A2,..An−1(用空格分隔),Ai表示第i项的初始值
第三行一个整数M,M=P+Q
第四至第M+3行,第i+4行输入整数Ti,Xi,Yi(用空格分隔),Ti=0表示调用update(Xi,Yi),Ti=1表示调用variance(Xi,Yi)
输出格式
对于每个variance函数的调用,输出结果
数据规模
50%的数据,1≤N≤1000,1≤P+Q≤1000
另50%的数据,1≤N≤100000,1≤P+Q≤100000
输入解题思路,AI测评打分。不知道怎么写?