原数组 a1, a2, a3, a4, a5, ......, an;
前缀和数组 s1, s2, s3, s4, s5, ....., sn;
sn = a1 + a2 + a3 + ...... + an;
作用 : s[r] - s[l - 1] = a[l] + ... + a[r];
例题代码
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int s[N], p[N];
int main()
{
int n, m;
scanf("%d %d", &n, &m);
int sum = 0; s[0] = 0; p[0] = 0;
for(int i = 1; i <= n; i ++)
{
scanf("%d", &s[i]);
sum += s[i];
p[i] = sum;
}
vector<int> q;
for(int i = 1; i <= m; i ++)
{
int a, b;
scanf("%d %d" , &a, &b);
printf("%d\n", p[b] - p[a - 1]);
}
return 0;}