根据题意,每次询问取数据 [l: r + 1]的总和,由于 n 的范围在 1 <= n <= 10 ** 5,则每次询问计算一次结果可能会超时,利用前缀数组 pre , 每次[l : r + 1] 即为前缀数组中的 pre[r] - pre[l] +data[l] 注意索引范围 代码如下:
n, q = map(int, input().strip().split())
data = list(map(int, input().strip().split()))
pre = [0 for _ in range(n)]
pre[0] = data[0]
for i in range(1, n):
pre[i] = pre[i - 1] + data[i]
for i in range(q):
l, r = map(int, input().strip().split())
res = pre[r - 1] - pre[l - 1] + data[l - 1]
print(res)