#12774. 静态区间和查询 (Static Range Sum Queries)
静态区间和查询 (Static Range Sum Queries)
静态区间和查询 (Static Range Sum Queries)
题目描述
给定一个包含 n 个整数的数组,你的任务是处理 q 个查询。每个查询的形式为:数组中从位置 a 到 b 的所有数值之和是多少?
输入格式
- 第一行包含两个整数 n 和 q:分别表示数组元素的数量和查询的数量。
- 第二行包含 n 个整数 x1, x2, ..., xn:表示数组中的具体数值。
- 接下来有 q 行,每行包含两个整数 a 和 b:表示查询区间 [a, b] 的起止位置(下标从 1 开始)。
输出格式
对于每个查询,输出对应的区间和,每个结果占一行。
数据范围
- 1 <= n, q <= 2 * 10^5
- 1 <= xi <= 10^9
- 1 <= a <= b <= n
样例输入
Plaintext
8 4
3 2 4 5 1 1 5 3
2 4
5 6
1 8
3 3
样例输出
Plaintext
11
2
24
4
解题核心提示
- 前缀和数组:创建一个新数组 S,其中 S[i] = x1 + x2 + ... + xi。
- 计算公式:区间 [a, b] 的和 = S[b] - S[a-1]。
- 数据类型:由于累加和可能非常大(最大约 2 * 10^14),在 C++ 中必须使用 long long,在 Java 中使用 long。