二维前缀和模板

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,m,q,a[1010][1010]={0},s[1010][1010]={0},x1,x2,y1,y2;
    scanf("%d%d%d",&n,&m,&q);
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            scanf("%d",&a[i][j]);
        }
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        s[i][j]=s[i-1][j]+s[i][j-1]+a[i][j]-s[i-1][j-1];
    }
    while(q--)
    {
        scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
        cout<<s[x2][y2]-s[x2][y1-1]-s[x1-1][y2]+s[x1-1][y1-1]<<endl;
    }
}

猜你喜欢

转载自blog.csdn.net/m0_74153798/article/details/131790320