题目描述
给定 n 个正整数组成的数列 a1, a2,⋯,an 和 m 个区间 [li,ri],分别求这m个区间的区间和。
对于所有测试数据,n,m\le10^5,a_i\le 10^4n,m≤105,ai≤104
输入格式
第一行,为一个正整数 n。
第二行,为 nn个正整数 a1,a2,⋯,an
第三行,为一个正整数 m。
接下来 m 行,每行为两个正整数 li,ri ,满足1\le l_i\le r_i\le n1≤li≤ri≤n
输出格式
共 m 行。
第 i 行为第 i 组答案的询问。
说明/提示
样例解释:第 11 到第 44 个数加起来和为 1010。第 22 个数到第 33 个数加起来和为 55。
对于 50 \%50% 的数据:n,m\le 1000n,m≤1000;
对于 100 \%100% 的数据:1 \le n, m\le 10^51≤n,m≤105,1 \le a_i\le 10^41≤ai≤104
题解
一维前缀和公式:
S[i]=a[i]+S[i-1]
二维前缀和公式:
S[i][j]=a[i][j]+S[i-1][j]+S[i][j-1]-S[i-1][j-1]
AC代码如下:
万能头文件 #include <bits/stdc++.h>
+