#include <iostream>
using namespace std;
const int N = 1e5 + 10;
int a[N], s[N];
int main()
{
int n, m;
scanf("%d%d", &n, &m);
// 注意下标必须要从1开始; 得到a1到an
for (int i = 1; i <= n ; i ++ ) scanf("%d", &a[i]);
//求前缀和数组sn = a1+a2+...+an
for (int i = 1; i <= n ; i ++ ) s[i] = s[i - 1] + a[i];
while ( m -- )
{
int l, r;
scanf("%d%d", &l, &r);
// [l,r]区间内所有数的和为s[r]-s[l-1]
printf("%d\n", s[r] - s[l - 1]);
}
return 0;
}
算法板子:求前缀和数组——得到一段区间内所有数的总和
于 2023-02-05 12:47:33 首次发布