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

【前缀和】二维前缀和(模板题)

在这里插入图片描述

DP35 【模板】二维前缀和

DP35 【模板】二维前缀和

​ 给你一个 nm 列的矩阵 A ,下标从 1 开始,接下来有 q 次查询,每次查询输入 4 个参数 x1 , y1 , x2 , y2

​ 请输出以 (x1, y1) 为左上角,(x2,y2) 为右下角的子矩阵的和。

输入描述:

​ 第一行包含三个整数 nmq

​ 接下来 n 行,每行 m 个整数,代表矩阵的元素

​ 接下来 q 行,每行 4 个整数 x1y1x2y2,分别代表这次查询的参数。

在这里插入图片描述

输出描述:

​ 输出 q 行,每行代表一次查询的结果。

示例1:

输入:3 4 31 2 3 43 2 1 01 5 7 81 1 2 21 1 3 31 2 3 4
输出:82532

解题思路

​ 一开始我有一个思路,虽然时间复杂度不是很好,其实就是借用了一维前缀和的思路,先开辟一个二维数组 prefix,然后将二维数组的每一行都进行一维前缀和,接着在多次查询中就需要遍历多列去获取每行的前缀和,累加起来,得到最后的前缀和!

​ 虽然这种做法是可以的,但其实时间复杂度没有达到最优处理!所以我们要利用二维前缀和的思想,其实就是一个简单的二维动态规划问题!

​ 那么我们就得想办法看看建立起一个状态转移方程,如下图所示,红色区域是我们要求的元素:
在这里插入图片描述

​ 此时如果我们直接从 [x1, y1] 开始求的话,那是比较麻烦的,和我们上面那个思路是差不多的,所以我们不妨这样子想:我们要求的区间,其实可以将其从 [1, 1][x2, y2] 区间分为下面四个区域:

在这里插入图片描述

​ 那我们想,能不能就求

http://www.xdnf.cn/news/3177.html

相关文章:

  • 动态规划降低空间复杂度例题及简化
  • Android Studio下载安装教程
  • pybind11 使用指南+示例
  • kibana重建es索引
  • 【Python学习路线】零基础到项目实战
  • AI Agent(1):概念与定义
  • [论文精读]Agent综述—— A survey on large language model based autonomous agents
  • 关于 MCP 的理论知识学习
  • 【影刀RPA实战案例】小红书商品数据采集
  • 文本解析到大模型应用
  • 大力探索“AI·Life爱生活”项目峰会暨战略投资签约仪式成功举办
  • C++中std::map、std::list和std::deque的底层实现是怎样的?
  • DeepSeek-Prover-V2-671B:数学推理的大模型新力量
  • UDP报文结构
  • 函数调用及Chain——SQL+GLM
  • 临床回归分析及AI推理
  • Cypress/Playwright 跨浏览器测试
  • QWen3对比QWen2.5:显著优势解析
  • Kubernetes Service 访问方式详解
  • GLM调用三种方式及多轮对话
  • 2025.4.27 Vue.js 基础学习笔记
  • using var connection = connectionFactory.CreateConnection(); using var 是什么意思
  • WPACS基于HTML5的DICOM影像浏览
  • 可编辑25页PPT | 企业数字底座:数据中台构建路径、方法和实践
  • D365 开发环境证书到期替换处理
  • 如何在Dify沙盒中安装运行pandas、numpy
  • 基于BM1684X+RK3588的智能工业视觉边缘计算盒子解决方案
  • 【Linux】Linux 系统中,定时任务(计划任务)
  • 开源模型应用落地-qwen模型小试-Qwen3-8B-快速体验-pipeline方式(二)
  • SpringCloud微服务知识点