一维前缀和
假设原数组为:
a 1 , a 2 , a 3 , . . . , a [ n ] \ a1,a2,a3,...,a[n] a1,a2,a3,...,a[n]
则前缀和数组s[i]:
s [ 0 ] = 0 s[0] = 0 s[0]=0
s [ i ] = a [ 1 ] + a [ 2 ] + a [ 3 ] + . . . a [ i ] s[i]=a[1]+a[2]+a[3]+...a[i] s[i]=a[1]+a[2]+a[3]+...a[i]
如何求s[i]: s [ i ] = s [ i − 1 ] + a [ i ] \ s[i] =s[i-1]+a[i] s[i]=s[i−1]+a[i]
作用:快速求出数组中一段数的和[l,r]:
s [ r ] − s [ l − 1 ] \ s[r]-s[l-1] s[r]−s[l−1]
例题
输入一个长度为 n的整数序列。接下来再输入 m个询问,每个询问输入一对l,r。对于每个询问,输出原序列中从第 l个数到第r个数的和。
#include <iostream>
#include <cstring>
#include &