当前位置: 首页 > news >正文

[优选算法专题四.前缀和——NO.26二维前缀和]

题目链接:

二维前缀和

题目描述:

题目解析:


代码逐部分解析

读入原始数据
int n = 0, m = 0, q = 0;
cin >> n >> m >> q;
vector<vector<int>> arr(n + 1, vector<int>(m + 1));
for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {cin >> arr[i][j];}
}
  • n:二维数组的行数,m:列数,q:查询次数。
  • 定义二维数组 arr,大小为 (n+1)×(m+1),下标从 1 开始(方便前缀和计算,避免处理边界时的额外判断)。
  • 双层循环读入 n×m 个元素,存储到 arr 中。
预处理前缀和矩阵 dp
vector<vector<long long>> dp(n + 1, vector<long long>(m + 1)); // 防止溢出
for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {dp[i][j] = dp[i-1][j] + dp[i][j-1] + arr[i][j] - dp[i-1][j-1];}
}
  • dp 是前缀和矩阵,类型为 long long(避免多个整数累加时溢出)。
  • dp[i][j] 表示:以 arr[1][1] 为左上角、arr[i][j] 为右下角的矩形区域的所有元素之和。
  • 计算公式推导dp[i][j] = 上方区域和(dp[i-1][j]) + 左方区域和(dp[i][j-1]) + 当前元素(arr[i][j]) - 重复计算的左上角区域和(dp[i-1][j-1])。(画图理解更直观:上方和左方区域重叠的部分被加了两次,需要减去一次)。
处理查询并输出结果
int x1 = 0, y1 = 0, x2 = 0, y2 = 0;
while (q--) {cin >> x1 >> y1 >> x2 >> y2;cout << dp[x2][y2] - dp[x1-1][y2] - dp[x2][y1-1] + dp[x1-1][y1-1] << endl;
}
  • 每次查询输入矩形的左上角坐标 (x1, y1) 和右下角坐标 (x2, y2)
  • 区域和计算公式:目标区域和 = 大矩形和(dp[x2][y2]) - 上方多余区域(dp[x1-1][y2]) - 左方多余区域(dp[x2][y1-1]) + 重复减去的左上角区域(dp[x1-1][y1-1])。(同样通过画图可清晰理解:减去上方和左方后,左上角重叠部分被多减了一次,需要加回)。

总结

  • 时间复杂度:预处理前缀和为 O(n*m),每次查询为 O(1),总复杂度为 O(n*m + q),适合大量查询的场景。
  • 空间复杂度O(n*m)(存储原始数组和前缀和矩阵)。
  • 关键点:数组下标从 1 开始简化边界处理,使用 long long 避免整数溢出。

http://www.dtcms.com/a/499697.html

相关文章:

  • 青岛做网站皆赴青岛博网站建设方案论文1500
  • SQL入门:同环比计算法全解析
  • 基于51单片机的12路病房呼叫系统设计与实现
  • Netty面试重点-2
  • 手机网站报价表贵州省住房和城乡建设部网站
  • 网站建设名深圳市seo上词多少钱
  • Vue+element ui导入组件封装——超级优雅版
  • Orleans StreamInstruments 作用分析
  • 全虚拟化、半虚拟化和SR-IOV直通-三种I/O虚拟化技术的核心差异
  • 《打造国漫唐风沉浸感:角色衣袂物理模拟的场景化技术方案》
  • 【三维分割】LangSplatV2:高维的语言3DGS,快到450+FPS
  • Kubernetes(k8s) —— 简介
  • 雅安工程交易建设网站建高级网站
  • 不止于S3:RustFS的多协议网关之路,如何平滑对接HDFS与WebDAV?
  • GIT 实战命令操作大全,代码变动,推动,修改备注,撤销(篇幅一)
  • 网站建设的 关键词家具公司网页设计
  • 蓝牙HCI指令
  • git命令——基础
  • 网站建设的总结200字wordpress长微博工具
  • Qt Q_ENUM和Q_ENUM_NS的区别?
  • 【机器人学中的状态估计】2.1 习题:证明p维高斯概率密度函数积分为1
  • 网站建设合同范本简易版邯郸有什么互联网大公司吗
  • 凡科建站的怎么取消手机网站怎么登录住建局官网
  • 什么是智能管理平台?
  • 《录井工程与管理》——第七章 录井资料处理技术
  • 温州瓯北做网站最好看的免费观看全集电视剧
  • 做网站上传图片做网站做app什么专业
  • 【OpenHarmony】外部设备管理器架构
  • 从头开始为 ARM 创建 Ubuntu 映像
  • Android 开发 | 如何使用命令使 Android 应用进入调试状态