前缀和
一维前缀和
const int N=1e5+10;
int a[N],sum[N];
int n,m;
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++) sum[i]=sum[i-1]+a[i];
while(m--)
{
int l,r;
cin>>l>>r;
cout<<sum[r]-sum[l-1]<<endl;
}
//system("pause");
}
二维前缀和
const int N=1010;
int a[N][N],sum[N][N];
int n,m,q;
int main()
{
cin>>n>>m>>q;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
scanf("%d",&a[i][j]);
sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+a[i][j];
}
while(q--)
{
int a,b,c,d;
cin>>a>>b>>c>>d;
cout<<sum[c][d]-sum[c][b-1]-sum[a-1][d]+sum[a-1][b-1]<<endl;
}
//system("pause");
}