算法796. 子矩阵的和——二维前缀和

Posted karshey

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法796. 子矩阵的和——二维前缀和相关的知识,希望对你有一定的参考价值。

算法概述

  1. 前缀和s的存储:存的是ij点与(0,0)围成的和。
s[i][j]=s[i-1][j]+s[i][j-1]+g[i][j]-s[i-1][j-1];
  1. 输入x1y1,x2y2求面积:
cout<<s[x2][y2]-s[x1-1][y2]-s[x2][y1-1]+s[x1-1][y1-1];

代码

#include<iostream>
using namespace std;

const int N=1005;
int s[N][N];
int main()
{
	int n,m,q;
	cin>>n>>m>>q;
	int g[N][N];
	
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cin>>g[i][j];
			s[i][j]=s[i-1][j]+s[i][j-1]+g[i][j]-s[i-1][j-1];
		}
	}
	
	while(q--)
	{
		int x1,y1,x2,y2;cin>>x1>>y1>>x2>>y2;
		//x2y2 - x1-1y2 - x2y1-1 + x1-1y1-1
		cout<<s[x2][y2]-s[x1-1][y2]-s[x2][y1-1]+s[x1-1][y1-1]<<endl;
	}
	
	return 0;
}

以上是关于算法796. 子矩阵的和——二维前缀和的主要内容,如果未能解决你的问题,请参考以下文章

796. 子矩阵的和

前缀和和差分模板(AcWing 795-798)

蓝桥杯AcWing 题目题解 - 二分与前缀和差分

AcWing 796. 子矩阵的和

796. 子矩阵的和

openjudge1768 最大子矩阵[二维前缀和or递推|DP]