二维前缀和公式 AcWing 796. 子矩阵的和

#include

using namespace std;

const int N=1010;

int a[N][N],s[N][N];

int main()
{
    int n,m,q;
    cin>>n>>m>>q;
    
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            cin>>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]-s[i-1][j-1]+a[i][j];
            
    while(q--)
    {
        int x1,y1,x2,y2;
        cin>>x1>>y1>>x2>>y2;
        cout<<s[x2][y2]-s[x1-1][y2]-s[x2][y1-1]+s[x1-1][y1-1]<<endl;
    }
    
    return 0;
}

二维前缀和

记住两个公式就行

不知道算难还是算简单,公式就是代码里面写的那样,完完全全公式,没有任何其他东西

你可能感兴趣的:(算法竞赛,#,acwing算法基础,矩阵,算法,线性代数)