首页 > 【模板】二维前缀和
头像 其实是牛哥
发表于 2021-10-19 15:18:52
【模板】二位前缀和 难度:3星 二维前缀和模板题。设 sum[i][j]sum[i][j]sum[i][j] 为左上角坐标为 [0,0][0,0][0,0] ,右下角坐标为 [i,j][i,j][i,j] 的子矩阵所有数之和。那么观察下图: 我们要求粉色部分的所有数之和(即④号),可以用下面的方式 展开全文
头像 xqxls
发表于 2021-10-27 12:48:46
题意整理。 给定一个n行m列的矩阵。 有q次查询,每次查询给定子矩阵的左上角坐标和右下角坐标,输出子矩阵中所有元素的累加和。 方法一(二维前缀和) 1.解题思路 首先对矩阵进行预处理,得到对应的前缀和矩阵。 利用前缀和矩阵相应区域的加减运算,即可得到对应子矩阵中所有元素的累加和。 图解展示( 展开全文
头像 静寂旮旯
发表于 2022-05-03 22:02:16
解题思路: 在输入过程中直接计算,记录从坐标(0,0)到当前坐标(x,y)所构成矩形的和,查询Q(x1,y1)to(x2,y2)=SUM(x2,y2)−SUM(x1−1,y2)−SUM(x2,y1−1)+SUM(x1−1,y1−1)Q_{(x1,y1) to (x2,y2)} = SUM_{(x2 展开全文
头像 向光而行的你很犹豫
发表于 2023-04-27 17:24:34
#include<iostream> using namespace std; long long a[1010][1010]; long long s[1010][1010]; int main(){ int n,m,q; cin>>n>>m> 展开全文
头像 wangpucong
发表于 2021-11-27 22:22:00
#include<stdio.h> int main() { int n,m,x1,y1,x2,y2; long long temp,q,arr[1001][1001]={0}; scanf("%d %d %lld",&n,&m,&q) 展开全文
头像 想成为大佬的小徐同学
发表于 2023-11-29 11:14:09
初始化部分:使用前缀和矩阵: #include <iostream> #include<vector> using namespace std; int main() { int n=0,m=0,q=0; cin>>n>>m>>q; 展开全文
头像 Gnomeshgh112
发表于 2025-04-16 12:48:53
1base玩家的狂喜a数组表示原数数据,b数组表示前缀和。b[i][j]表示a中从[0][0]到[i][j]的所有元素的和。使用一个循环维护b数组既可。结果中,只需要返回b[x2][y2] - b[x2][y1 - 1] - b[x1 - 1][y2] + b[x1 - 1][y1 - 1]既可。画 展开全文
头像 寒武子星
发表于 2021-12-07 11:00:25
解题思路大佬们都说了,这里提供下Python实现过程,供大家参考 while True: try: n, m, q = map(int, input().split()) l = [] for _ in range(n): 展开全文
头像 赫he
发表于 2023-07-20 21:37:48
求二维前缀和矩阵 公式:mat[i][j] = mat[i-1][j]+mat[i][j-1]-mat[i-1][j-1] + 求解给定矩形范围的数字和 公式:ans(x1,y1,x2,y2) = mat[x2][y2]-mat[x2][y1-1]-mat[x1-1][y2]+mat[x1-1][ 展开全文
头像 牛客484960258号
发表于 2021-12-30 12:16:09
while True: try: n,m,q = map(int,input().split()) data = [] for i in range(n): data.append(list(map(int,input( 展开全文