AcWing <796. 子矩阵的和>

简介: 二维前缀和总结

image.png

之前讲了一维层面的前缀和数组,这次来讲讲二维的前缀和数组。而每一个位置都表示从起点开始到当前位置之内所有数的和。

image.png

我们也很容易观察到,若我们想要对其进行初始化只需要,用上部分的和加上左部分的和,由于中间部分算了两次由此需要扣掉一次,即s[i,j] = a[i, j] + s[i, j-1] + s[i-1, j] - s[i-1, j-1]。

image.png

初始化之后要求子矩阵的和就只需要用红色部分减去两个绿色的部分,最后把重复减去的部分再加回来就可以了。即 s [x1y1,x2y2] = s[x2,y2] - s[x2,y1-1] - s[x1-1,y2] + s[x1-1,y1-1]

image.png

最后上代码

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 1010;
int a[N][N], s[N][N];
int n, m, q;
int main()
{
  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] - s[i - 1][j - 1] + a[i][j];
    }
  }
  while (q--)
  {
    int x1, y1, x2, y2;
    scanf("%d%d%d%d", &x1, &y1, &x2, &y2);  //求子矩阵的和
    printf("%d\n", s[x2][y2] - s[x2][y1 - 1] - s[x1 - 1][y2] + s[x1 - 1][y1 - 1]);
  }
  return 0;
}

image.gif

目录
打赏
0
0
0
0
55
分享
相关文章
探索Java中的Lambda表达式与Stream API
【10月更文挑战第22天】 在Java编程中,Lambda表达式和Stream API是两个强大的功能,它们极大地简化了代码的编写和提高了开发效率。本文将深入探讨这两个概念的基本用法、优势以及在实际项目中的应用案例,帮助读者更好地理解和运用这些现代Java特性。
01.【微服务架构】服务注册与发现:AP和CP,你选哪个?-- 服务注册与发现模型
【5月更文挑战第1天】本文探讨了服务注册与发现的关键作用,在微服务架构中,这一概念常出现在面试中。文章深入讲解基础模型,包括服务端注册、心跳维持、客户端缓存及服务端下线流程,并强调了高可用性的重要性,涉及服务端崩溃检测、客户端容错和注册中心选型。通过分析客户端、注册中心和服务端之间的交互,提出如何应对潜在故障的策略,以构建稳定的微服务架构。
110 3
01.【微服务架构】服务注册与发现:AP和CP,你选哪个?-- 服务注册与发现模型
GO 中 Chan 实现原理分享
嗨,我是小魔童哪吒,还记得咱们之前分享过GO 通道 和sync包的使用吗?咱们来回顾一下 • 分享了通道是什么,通道的种类
229 0
实时计算 Flink版产品使用合集之FlinkSQL和PyFlink是否支持整库同步功能
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
108 0
Linux系统管理与服务器安全:构建稳健云数据中心
Linux系统管理与服务器安全:构建稳健云数据中心
209 0
【数据库】解决 oracle: SQL 错误 [900] [42000]: ORA-00900: 无效 SQL 语句
【数据库】解决 oracle: SQL 错误 [900] [42000]: ORA-00900: 无效 SQL 语句
2814 0
【数据库】解决 oracle: SQL 错误 [900] [42000]: ORA-00900: 无效 SQL 语句
CleanMyMac2023mac电脑垃圾清理工具下载教程
对于刚刚入手苹果Mac设备的用户来说,什么软件好用、怎样设置能够获得最佳的使用体验等这些问题都需要一步一步摸索,但其实,从懵懂到熟练使用OS X系统的过程是非常有趣的。日前,有网友分享了自己认为在mac系统下非常好用的软件,CleanMyMac下载:http://t.csdn.cn/oIkCJ
184 0
Servlet三大作用域:Request、Session、Application
Servlet三大作用域:Request、Session、Application
304 0
登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问