输入一个n行m的整数矩阵,再输入q个询问,每个询问包含四个整数x1,y1,x2,y2,表示一个子矩阵的左上角坐标和右下角坐标。 对于每个询问输出子矩阵中所有数的和。 输入格式 第一行包含三个整数n,m,q。 接下来n行,每行包含m个整数,表示整数矩阵。 接下来q行,每行包含四个整数x1,y1,x2,y2,表示一组询问。
【模板】静态矩阵和(二维前缀和) https://www.nowcoder.com/practice/111cdd09f7c442f696e8127d08ece90fn,m,q = map(int, input().split()) //map g = [] for i in range(n): g.append(list(map(int, input().split())) s = [[0]*(m+1) for _ in range(n+1)] for i in range...
【模板】静态矩阵和(二维前缀和) https://www.nowcoder.com/practice/111cdd09f7c442f696e8127d08ece90f#include <stdio.h> #define ll long long int main() { int n, m, q; if (scanf("%d %d %d", &n, &m, &q) != EOF) { ll matrix[n + 1][m + 1], matrixsum[n + 1][m + ...
【模板】静态矩阵和(二维前缀和) https://www.nowcoder.com/practice/111cdd09f7c442f696e8127d08ece90f使用二维前缀和即可,需要注意不定长的二维数组可以使用vector #include <bits/stdc++.h> using namespace std; #define int long long const int N = 1005; int __t = 1, n, m, q, x11, y11,...
二维前缀和数组中的每一个格子记录的是「以当前位置为区域的右下角(区域左上角恒定为原数组的左上角)的区域和」 贴一张官解示意图,我觉得很清晰: 如果觉得不清晰,请将将 f[i][j] 理解成是以 (i, j) 为右下角,(0, 0) 为左上角的区域和。
【算法】前缀和——二维前缀和模板题 本节博客是通过——二位前缀和模板题来介绍前缀和二维算法,有需要借鉴即可。 1.题目 题目链接:LINK 2.暴力求解 这里我们首先想到的就是一个暴力求解的方式,挨个需要的进行遍历就好了嘛~代码很简单,反正八成这牛客不会让你过。。。这里我们就不再赘述了。
int ans = sum[r] - sum[l-1]; //[3,7]的区间和 1. 2. 3. 4. 5. 6. 7. 8. 9. 二维前缀和 对于二维数组,我们可以先对每一行进行一维前缀和,然后对每一列进行一维前缀和,即可得到二维前缀和数组。 设 表示二维数组中第 行第 列的元素值, ...
思路:就是使用二维前缀和的模板: 先放模板: #include<iostream>usingnamespacestd;#definell long longconstintmaxn = 1e3 +10; ll a[maxn][maxn], jx[maxn][maxn]; ll n, m, L, xa, ya, xb, yb; ll aa, bb, maxx=0;intmain(){ ...
【模板】二维前缀和 https://www.nowcoder.com/practice/99eb8040d116414ea3296467ce81cbbc #include<iostream> using namespace std; #include<vector> //1.预处理出来一个前缀和矩阵dp //dp[i][j]表示从(1,1)位置到(i,j)位置,这段区间中所有元素的和 int main() { int n = 0, m = 0;//n行...
虽然「二维前缀和」的模板相比「一维前缀和」的模板要长,但是逻辑是清晰的,可以现场推导。 当然也可以在理解的基础上,使用以下方式进行记忆: // 预处理前缀和数组{sum = new int[n + 1][m + 1];for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {// 当前格子(和) =...