import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] line = br.readLine().split(" ");
int n = Integer.parseInt(line[0]);
int q = Integer.parseInt(line[1]);
int[] a = new int[n + 1];
line = br.readLine().split(" ");
for (int i = 1; i <= n; i++) {
a[i] = Integer.parseInt(line[i - 1]);
}
long[] prefix = new long[n + 1];
for (int i = 1; i <= n; i++) {
prefix[i] = prefix[i - 1] + a[i];
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < q; i++) {
line = br.readLine().split(" ");
int l = Integer.parseInt(line[0]);
int r = Integer.parseInt(line[1]);
long sum = prefix[r] - prefix[l - 1];
sb.append(sum).append('\n');
}
System.out.print(sb.toString());
}
}
https://www.nowcoder.com/discuss/727521113110073344
思路:
- 输入处理:使用BufferedReader读取输入以提高效率,读取数组大小n和查询次数q。
- 数组初始化:创建数组a存储输入元素,索引从1开始以便直接对应查询的区间。
- 前缀和计算:构建前缀和数组prefix,其中prefix[i]表示前i个元素的和。
- 查询处理:对于每个查询,计算区间和并存入StringBuilder,最后统一输出以减少IO操作次数。



京公网安备 11010502036488号