A49458.统计……?
普及+/提高
通过率:0%
时间限制:3.00s
内存限制:256MB
题目描述
在学过平均数、中位数、众数后,数学老师交给 cjdst 一个任务,要求他用代码实现以下功能。
给定两个长度为 N 的数组 A,B。
这个代码需要执行 Q 次操作,第 i 次操作的类型为 Ti:
-
Ti=1:给定三个数 Li,Ri,Xi,将 A 数组中 [Li,Ri] 的所有数的值增加 Xi。
-
Ti=2:给定两个数 Li,Ri,以数组 B 中 [Li,Ri] 的元素为权,查询 A 数组中 [Li,Ri] 的加权平均数,即
∑j=LiRiBj∑j=LiRiAj×Bj
为避免浮点数精度问题,请将结果向下取整。
请你帮帮 cjdst。
输入格式
第一行两个正整数 N,Q。
第二行 N 个正整数 Ai。
第三行 N 个正整数 Bi。
接下来 Q 行,每行若干个正整数,可能是以下的情况:
1 Li Ri Xi
这表示 Ti=1 的情况。
2 Li Ri
这表示 Ti=2 的情况。
输出格式
对于每个 Ti=2 的查询,在单独的一行输出答案。
输入输出样例
输入#1
5 5 4 2 4 5 1 1 2 4 4 5 1 1 5 1 2 3 4 2 2 5 1 1 3 3 2 4 4
输出#1
5 4 6
说明/提示
样例解释
1. 将 A1,A2,A3,A4,A5 的值增加 1,此时数组 A=(5,3,5,6,2)。
2. 以 (4,4) 为权,(5,6) 的加权平均数为 4+45×4+6×4=5.5。
3. 以 (2,4,4,5) 为权,(3,5,6,2) 的加权平均数为 2+4+4+53×2+5×4+6×4+2×5=4。
4. 将 A1,A2,A3 的值增加 3,此时数组 A=(8,5,8,6,2)。
5. 以 (4) 为权,(6) 的加权平均数为 46×4=6。
数据说明
样例解释
1. 将 A1,A2,A3,A4,A5 的值增加 1,此时数组 A=(5,3,5,6,2)。
2. 以 (4,4) 为权,(5,6) 的加权平均数为 4+45×4+6×4=5.5。
3. 以 (2,4,4,5) 为权,(3,5,6,2) 的加权平均数为 2+4+4+53×2+5×4+6×4+2×5=4。
4. 将 A1,A2,A3 的值增加 3,此时数组 A=(8,5,8,6,2)。
5. 以 (4) 为权,(6) 的加权平均数为 46×4=6。
数据说明
保证 1≤Li,Ri≤N。
以下是测试点信息:
测试点 | N,Q | Ai,Bi,Xi | 性质 |
---|---|---|---|
1 | ≤10 | ≤10 | 数据为样例#1 |
2∼5 | ≤103 | ≤10 | 无 |
6 | ≤105 | ≤103 | A |
7 | ≤105 | ≤103 | B |
8 | ≤105 | ≤103 | C |
9 | ≤105 | ≤103 | D |
10,11 | ≤105 | ≤103 | 无 |
12 | ≤5×105 | ≤103 | B |
13 | ≤5×105 | ≤103 | C |
14 | ≤5×105 | ≤103 | D |
15∼25 | ≤5×105 | ≤103 | 无 |
性质 A:保证 Ri−Li<103。
性质 B:保证不会出现 Ti=1 的情况。
性质 C:保证 Ti=2 的情况出现的次数小于等于 5。
性质 D:保证所有的 Bi 都相等。
本题输入输出量较大,建议使用较快的IO方式,如:
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);