浅谈前缀和(一维)
Kingdom_Tears · · 算法·理论
前缀和的用途
前缀和是一种常用的算法技巧,通过预处理数组来快速计算某个区间的和。它的核心思想是利用空间换时间,预先计算出数组的前缀和,从而在查询时能够快速得到结果
一维前缀和的基本思想
一维前缀和的基本思想是构建一个新的数组
求前缀和数组
前缀和数组的第
for (int i = 1; i <= n; i++){
b[i] = b[i - 1] + a[i];
}
原数组
前缀和数组
前缀和求区间和的公式
求出了前缀和数组又怎样求一个区间的和呢?
我们假设这个区间是
所以用代码写就是
int ans = b[r] - b[l - 1];//[l,r] 的区间和
一维前缀和最终代码
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
int n, a[N], b[N], l, r;
int main() {
scanf("%d", &n);
for(int i = 1; i <= n; i++){
scanf("%d", &a[i]);
b[i] = b[i - 1] + a[i];//求前缀和数组
}
scanf("%d%d", &l, &r);
int ans = b[r] - b[l - 1];//[l,r] 的区间和
printf("%d", ans);
return 0;
}