前缀和:(类似数列前n项和)

用sum数组记录前i项和

sum[i]=a[0]+a[1]...+a[i]

用途:可以快速求得区间【i,j】所有数的和

【前缀和】前缀和模板_数组

 两式相减得证

    /*前缀和注意要点:
     1.     已知num数组,再申请一个同样大小的sum数组
     2.  为了方便计算,num数组和sum数组一律以下标1为第一个元素
     3.  边输入,边更新sum数组
           sum[0]=0;
           for(int i=1;i<=n;i++)
           {
            cin>>num[i];
            sum[i]=sum[i-1]+a[i];
           }
     4.  求sum[i..j](即第i个数到第j个数的和)
           sum[i..j]=sum[j]-sum[i-1]
            如果i等于1,sum[1..j]=sum[j]-sum[0]=sum[j]
            所以,num&&sum数组从1开始且sum[0]=0 

【前缀和】前缀和模板_i++_02

  

#include<iostream>
using namespace std;
int sum[100001];
int a[100001];
int n,m;
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
         cin>>a[i];
         sum[i]=sum[i-1]+a[i];
    }
    while(m--){
        int l,r;
        cin>>l>>r;
        cout<<sum[r]-sum[l-1]<<endl;
    }
    return 0;
}