什么是前缀和
原数组: a[1], a[2], a[3], a[4], a[5], …, a[n]
前缀和 Si为数组的前 i项和
前缀和: S[i] = a[1] + a[2] + a[3] + … + a[i]
注意: 前缀和的下标一定要从 1开始, 避免进行下标的转换
前缀和的作用
快速求出元素组中某段区间的和
s[i] = s[i - 1] + a[i];
模板
int main(){
cin >> n >> m;
for(int i = 1; i <= n; i++) cin >> a[i];
for(int i = 1; i <= n; i++) s[i] = s[i - 1] + a[i]; //前缀和的初始化
while(m --){
int l, r;
cin >> l >> r;
cout << s[r] - s[l - 1] << endl; //区间和的计算
}
return 0;
}
二维数组求解前缀项和
如图
求解前缀项和
如图