#YHW706. 区间求和

区间求和

分块区间操作与求和问题

1. 题目描述

给定一个长度为 nn 的整数数组 aa(下标从 1 开始),需要支持以下两种操作:

  • 当操作类型为 0 时,表示修改操作。给定三个整数 llrrxx,将区间 [l,r][l, r] 内的所有值增加 xx
  • 当操作类型为 1 时,表示查询操作。给定两个整数 llrr,计算数组中 al,al+1,,ara_l, a_{l + 1}, \cdots, a_r 的和。

请使用分块思想实现对这些操作的高效处理。

2. 输入

2.1 输入格式

  • 第一行:两个整数 nnmm1n,m1051 \leq n, m \leq 10^5),分别表示数组长度和操作数量。
  • 第二行:nn 个整数 a1,a2,,ana_1, a_2, \cdots, a_n109ai109-10^9 \leq a_i \leq 10^9),表示初始数组。
  • 接下来 mm 行:每行四个整数 opopllrrxx。其中 opop 取值为 0 或 1,1lrn1 \leq l \leq r \leq n109x109-10^9 \leq x \leq 10^9。当 op=0op = 0 时,代表修改操作,llrr 表示区间的左右边界,xx 表示要增加的值;当 op=1op = 1 时,代表查询操作,llrr 分别表示查询区间的左、右边界。

2.2 输入样例

5 5
1 2 3 4 5
1 1 3
0 2 4 3
1 2 4
0 1 5 2
1 1 5

3. 输出

3.1 输出格式

对于每个查询操作(即 op=1op = 1 时),输出一个整数,表示对应区间的和,每个结果占一行。

3.2 输出样例

6
18
34

4. 数据范围

  • 1n1051 \leq n \leq 10^5
  • 1m1051 \leq m \leq 10^5
  • 109ai109-10^9 \leq a_i \leq 10^9
  • op{0,1}op \in \{0, 1\}
  • 1lrn1 \leq l \leq r \leq n
  • 109x109-10^9 \leq x \leq 10^9