前缀和就是一个数组的前n个数的和,问题一般问从L到R的区间的和,就用前R个数的和减去前L-1个数的和,得到L到R区间的求和
代码:
1 #include <iostream>
2 using namespace std;
3 const int N=100010;
4 int n,m;
5 int a[N],s[N];
6 int main()
7 {
8 scanf("%d%d",&n,&m);
9 for(int i=1;i<=n;i++)
10 {
11 scanf("%d",&a[i]);
12 }
13 for(int i=1;i<=n;i++)
14 {
15 s[i]=s[i-1]+a[i];
16 }
17 while(m--)
18 {
19 int l,r;
20 scanf("%d%d",&l,&r);
21 printf("%d\n",s[r]-s[l-1]);
22 }
23 return 0;
24 }