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

刷题——【模板】二维前缀和

前缀和

  • 题目
    • 题目链接
    • 题解
      • 方法一
      • 方法二

题目

描述
给你一个 n 行 m 列的矩阵 A ,下标从1开始。

接下来有 q 次查询,每次查询输入 4 个参数 x1 , y1 , x2 , y2

请输出以 (x1, y1) 为左上角 , (x2,y2) 为右下角的子矩阵的和,
输入描述:
第一行包含三个整数n,m,q.

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

接下来q行,每行4个整数x1, y1, x2, y2,分别代表这次查询的参数
在这里插入图片描述

输出描述:
输出q行,每行表示查询结果。

在这里插入图片描述

题目链接

二维前缀和题目链接

题解

方法一

显而易见,最容易想到的方法就是先录入数据,然后一行一行的求和。但是这种方法会超时。其时间复杂度为O(m * n * q)。

#include <iostream>
#include <vector>using namespace std;int main() {int n, m, q;cin >> n >> m >> q;vector<vector<int>> matrix(n, vector<int>(m));for (int i = 0; i < n; ++i) {for (int j = 0; j < m; ++j) {cin >> matrix[i][j];}}for (int i = 0; i < q; ++i) {int x1, y1, x2, y2;cin >> x1 >> y1 >> x2 >> y2;int sum = 0;for (int row = x1 - 1; row <= x2 - 1; ++row) { // 数组是从0开始的,所以要减1for (int col = y1 - 1; col <= y2 - 1; ++col) {sum += matrix[row][col];}}cout << sum << endl;}return 0;
}

不多赘述,下面看最优解。

方法二

一遍遍求显然复杂度太高,那么能不能先求取(1,1)到(x,y)的和在找规律求取题目要求的和呢?答案是可以的。

先求前缀和数组,显然我们不能每次都遍历一次求和,复杂度太高,那么就可以利用前面已经求出的值求出当前的和。

ps:因为下标从1开始,所以不用考虑越界。
在这里插入图片描述

由此可以得出D区域的求和公式为dp[i][j] = dp[i-1][j] + dp[i][j-1] - dp[i-1][j-1] + arr[i][j];

再求某一个小区域的和,与此类似,画图总结公式,利用已知和求取。

在这里插入图片描述
由此可以得出D区域的求和公式为dp[x2][y2] - dp[x2][y1-1] - dp[x1-1][y2] + dp[x1-1][y1-1];

最终代码

#include <iostream>
#include <vector>
using namespace std;int main() 
{int n, m, q;cin >> n >> m >> q;vector<vector<int>> arr(n+1,vector<int>(m+1));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++)cin >> arr[i][j];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] - dp[i-1][j-1] + arr[i][j];int x1,y1, x2, y2;long long sum = 0;for (int i = 1; i <= q; i++) {cin >> x1 >> y1 >> x2 >> y2;sum = dp[x2][y2] - dp[x2][y1-1] - dp[x1-1][y2] + dp[x1-1][y1-1];cout << sum << endl;}return 0;
}

相关文章:

刷题——【模板】二维前缀和

前缀和 题目题目链接题解方法一方法二 题目 描述 给你一个 n 行 m 列的矩阵 A &#xff0c;下标从1开始。 接下来有 q 次查询&#xff0c;每次查询输入 4 个参数 x1 , y1 , x2 , y2 请输出以 (x1, y1) 为左上角 , (x2,y2) 为右下角的子矩阵的和&#xff0c; 输入描述&#x…...

Xilinx 7 系列 FPGA的各引脚外围电路接法

Xilinx 7系列FPGA的外围电路接法涉及到多个方面&#xff0c;包括电源引脚、时钟输入引脚、FPGA配置引脚、JTAG调试引脚&#xff0c;以及其他辅助引脚。 本文参考资料&#xff1a; ds180 - 7 Series FPGAs Data Sheet - Overview ds181 - Artix 7 FPGAs Data Sheet - DC and AC…...

Python 爬虫 (1)基础 | 目标网站

一、目标网站 1、加密网站 1.1、关键字比较明确 企名片&#xff1a;https://wx.qmpsee.com/articleDetail?idfeef62bfdac45a94b9cd89aed5c235be 1.2、关键字比较泛 烯牛数据&#xff1a;https://www.xiniudata.com/project/event/lib/invest...

数字后端零基础入门系列 | Innovus零基础LAB学习Day11(Function ECO流程)

###LAB 20 Engineering Change Orders (ECO) 这个章节的学习目标是学习数字IC后端实现innovus中的一种做function eco的flow。对于初学者&#xff0c;如果前面的lab还没掌握好的&#xff0c;可以直接跳过这节内容。有时间的同学&#xff0c;可以熟悉掌握下这个flow。 数字后端…...

量子卷积神经网络

量子神经网络由量子卷积层、量子池化层和量子全连接层组成 量子卷积层和量子池化层交替放置&#xff0c;分别实现特征提取和特征降维&#xff0c;之后通过量子全连接层进行特征综合 量子卷积层、量子池化层和量子全连接层分别由量子卷积单元、量子池化单元和量子全连接单元组…...

储能电站构成及控制原理

系列文章目录 能量管理系统(EMS)储能充放电策略 文章目录 系列文章目录一、储能电站构成二、储能系统关键部件及作用1.电池储能系统2.功率变换系统(Power Conversion System,PCS)3.变配电系统4.后台监控系统5.继电保护及安全自动装置 三、储能电站的功能四、储能电站控制策略 …...

Rocky Linux 系统安装/部署 Docker

1、下载docker-ce的repo文件 [rootlocalhost ~]# curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo % Total % Received % Xferd Average Speed Time Time Time Current Dloa…...

12 —— Webpack中向前端注入环境变量

需求&#xff1a;开发模式下打印语句生效&#xff0c;生产模式下打印语句失效 使用Webpack内置的DefinePlugin插件 const webpack require(webpack) module.exports { plugins: [ new webpack.DefinePlugin({ process.env.NODE_ENV:JSON.stringify(process.env.NODE_ENV) }…...

uniapp接入BMapGL百度地图

下面代码兼容安卓APP和H5 百度地图官网&#xff1a;控制台 | 百度地图开放平台 应用类别选择《浏览器端》 /utils/map.js 需要设置你自己的key export function myBMapGL1() {return new Promise(function(resolve, reject) {if (typeof window.initMyBMapGL1 function) {r…...

外卖系统开发实战:从架构设计到代码实现

开发一套外卖系统&#xff0c;需要在架构设计、技术选型以及核心功能开发等方面下功夫。这篇文章将通过代码实例&#xff0c;展示如何构建一个基础的外卖系统&#xff0c;从需求梳理到核心模块的实现&#xff0c;帮助你快速掌握开发要点。 一、系统架构设计 一个完整的外卖系…...

神经网络反向传播算法公式推导

要推导反向传播算法&#xff0c;并了解每一层的参数梯度如何计算&#xff0c;以及每一层的梯度受到哪些值的影响&#xff0c;我们使用一个简单的神经网络结构&#xff1a; 输入层有2个节点一个有2个节点的隐藏层&#xff0c;激活函数是ReLU一个输出节点&#xff0c;激活函数是…...

Spark SQL 之 QueryStage

ExchangeQueryStageExec ExchangeQueryStageExec 分为两种...

【shodan】(三)vnc漏洞利用

shodan基础&#xff08;三&#xff09; 声明&#xff1a;该笔记为up主 泷羽的课程笔记&#xff0c;本节链接指路。 警告&#xff1a;本教程仅作学习用途&#xff0c;若有用于非法行为的&#xff0c;概不负责。 count count命令起到一个统计计数的作用。 用上节的漏洞指纹来试…...

每日OJ_牛客_游游的字母串_枚举_C++_Java

目录 牛客_游游的字母串_枚举 题目解析 C代码 Java代码 牛客_游游的字母串_枚举 游游的字母串 描述&#xff1a; 对于一个小写字母而言&#xff0c;游游可以通过一次操作把这个字母变成相邻的字母。a和b相邻&#xff0c;b和c相邻&#xff0c;以此类推。特殊的&#xff0…...

51c深度学习~合集8

我自己的原文哦~ https://blog.51cto.com/whaosoft/12491632 #patchmix 近期中南大学的几位研究者做了一项对比学习方面的工作——「Inter-Instance Similarity Modeling for Contrastive Learning」&#xff0c;主要用于解决现有对比学习方法在训练过程中忽略样本间相似关系…...

嵌入式:Flash的分类以及Jlink/J-flash的编程支持

相关阅读 嵌入式https://blog.csdn.net/weixin_45791458/category_12768532.html?spm1001.2014.3001.5482 常见的Flash大致可以分为以下大类&#xff1a; Serial Nor FlashSerial Nand FlashParallel Nor FlashParallel Nand FlashSerial EEPROM Serial Nor Flash 介绍 Se…...

【爬虫】Firecrawl对京东热卖网信息爬取(仅供学习)

项目地址 GitHub - mendableai/firecrawl: &#x1f525; Turn entire websites into LLM-ready markdown or structured data. Scrape, crawl and extract with a single API. Firecrawl更多是使用在LLM大模型知识库的构建&#xff0c;是大模型数据准备中的一环&#xff08;在…...

遗传算法(Genetic Algorithm, GA)

简介 遗传算法&#xff08;Genetic Algorithm, GA&#xff09;是一种基于自然选择和遗传机制的优化算法&#xff0c;由 John Holland 于20世纪70年代提出。它是一种模拟生物进化过程的启发式搜索算法&#xff0c;被广泛应用于函数优化、机器学习、调度问题等领域。 代码说明 …...

【二分答案+倍增快速幂】课堂练习

P1678 烦恼的高考志愿 #include<bits/stdc.h> using namespace std; const int N1e55; int n,m,a[N];long long bs(int x){int l1,rn;while(l<r){int midlr>>1;if(a[mid]x) return 0;if(a[mid]>x) rmid-1;else lmid1;}//根据前驱后继返回最小差值//printf(&…...

LeetCode 力扣 热题 100道(九)反转链表(C++)

给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 方法一&#xff1a;迭代法 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNod…...

告别Keil5刺眼白屏!保姆级教程教你配置VS Code同款暗黑主题(附3套配色方案)

Keil5暗黑主题终极改造指南&#xff1a;从护眼原理到深度定制 凌晨三点的实验室里&#xff0c;显示屏刺眼的白光让我的眼球开始灼烧般疼痛——这是许多嵌入式开发者共同的噩梦。Keil5作为单片机开发的主流工具&#xff0c;其默认的亮色主题在长时间编码时带来的视觉负担远超你的…...

索尼A6000/A7相机APP免费安装保姆级教程(含最新pmca工具下载)

索尼A6000/A7相机APP免费安装全流程指南&#xff08;2024最新版&#xff09; 作为一名长期使用索尼微单的摄影师&#xff0c;我深刻理解官方应用商店里那些本应内置的功能被拆分成付费APP的无奈。延时摄影、多重曝光这些基础功能&#xff0c;在二代机型上居然要额外付费解锁&am…...

Labelme标注实战:5分钟搞定语义分割数据集制作(附避坑指南)

Labelme标注实战&#xff1a;5分钟搞定语义分割数据集制作&#xff08;附避坑指南&#xff09; 当你第一次接触计算机视觉项目时&#xff0c;可能会被海量的标注需求吓到。别担心&#xff0c;今天我要分享的是如何用Labelme这个轻量级工具&#xff0c;快速完成语义分割数据标注…...

Anything to RealCharacters效果评测:与Stable Diffusion ControlNet写实方案对比

Anything to RealCharacters效果评测&#xff1a;与Stable Diffusion ControlNet写实方案对比 1. 项目概述 Anything to RealCharacters是一款专为RTX 4090显卡优化的2.5D转真人图像转换系统。这个工具基于通义千问Qwen-Image-Edit-2511图像编辑底座&#xff0c;集成了专门的…...

2026 Global Ion Exchange Resin Systems Market Trends:关税扰动下的工程水处理系统重构与产业链迁移逻辑

观点 离子交换树脂系统的竞争核心&#xff0c;已经不再是“树脂材料”&#xff0c;而是“系统工程能力 供应链组织能力”。 2026年关税变量的加入&#xff0c;本质上正在把这个行业从“化工材料赛道”&#xff0c;推向“工程系统全球制造网络”的复合竞争阶段。一、这不是树脂…...

Qwen3.5-9B-AWQ-4bitWeb界面使用教程:上传/提问/防重复提交/结果解析全流程

Qwen3.5-9B-AWQ-4bit Web界面使用教程&#xff1a;上传/提问/防重复提交/结果解析全流程 1. 认识Qwen3.5-9B-AWQ-4bit模型 Qwen3.5-9B-AWQ-4bit是一个强大的多模态AI模型&#xff0c;它能够同时理解图片和文字。想象一下&#xff0c;你有一个既会看图片又会回答问题的智能助手…...

重构PDF知识管理:Obsidian PDF++让文献处理效率提升300%的实战指南

重构PDF知识管理&#xff1a;Obsidian PDF让文献处理效率提升300%的实战指南 【免费下载链接】obsidian-pdf-plus PDF: the most Obsidian-native PDF annotation & viewing tool ever. Comes with optional Vim keybindings. 项目地址: https://gitcode.com/gh_mirrors/…...

Cursor Composer 2 技术报告拆解:MoE 预训练、RL 环境设计与 CursorBench 基准的工程实践

在生产级代码仓库里&#xff0c;一个 AI Agent 面对的往往不是“实现某个功能”这样清晰的任务&#xff0c;而是“新特性上线后出现诡异 bug&#xff0c;日志里只有 954 个 JSON 响应&#xff0c;栈踪迹完全不可靠”。它必须自己跨文件定位、写启发式检测器、调参避免误报&…...

避开这些坑!在PX4 1.14.0上添加自定义串口传感器的完整避坑指南

PX4 1.14.0自定义串口传感器开发实战&#xff1a;从设备注册到数据解析全链路避坑指南 当你在PX4飞控上尝试接入一款新型激光雷达时&#xff0c;是否遇到过这样的场景&#xff1a;按照官方文档一步步操作&#xff0c;编译通过后却发现传感器始终无法输出有效数据&#xff1f;本…...

DS4Windows手柄适配工具全解析:从安装到高级配置的完美指南

DS4Windows手柄适配工具全解析&#xff1a;从安装到高级配置的完美指南 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows 在PC游戏领域&#xff0c;手柄支持一直是玩家体验的关键环节。许多…...