前缀和
原题链接
https://www.acwing.com/problem/content/797/
作用
可以快速求某一个区间的和
公式
- 初始化前缀和
s[i] = s[i-1] + a[i]
- **求某一段区间的和
[l,r]
**
s[r] - s[l-1]
注意点
在初始化前缀和以及输入的时候,数组使用1开始可以解决边界问题
并且后面求区间的时候也可以直接套用公式
代码
#include<iostream>
using namespace std;
const int N = 100010;
int a[N],s[N];
int main()
{
int n,m;
scanf("%d%d",&n,&m);
//前缀和差分最好是1开头,可以解决边界问题,后面求区间的时候也好求
for(int i = 1; i <= n; i++) scanf("%d",&a[i]);
for(int i = 1; i <= n; i++) s[i] = s[i-1]+a[i];
while(m --)
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d\n",s[b] - s[a-1]);
}
return 0;
}
("%d\n",s[b] - s[a-1]);
}
return 0;
}