其实很简单,就是前缀和的模板
举个例子:
n=5;m=1;
a[]={1,2,3,4,5};
经处理过后:dp[]=1,3,6,10,15
l=2;r=4;
那么以此类推,推出dp[r]-dp[l]就是l到r的区间和,则代码如下:
#include<bits/stdc++.h>
using namespace std;
long long n,a[100005],dp[100005],m;//定义
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i],dp[i]+=a[i]+dp[i-1];//输入并前缀和
cin>>m;
while(m--)
{
int l,r;
cin>>l>>r;//输入区间
cout<<dp[r]-dp[l-1]<<"\n";//公式代入
}
return 0;
}