算法思想之前缀和

前缀和:快速求出数组中某连续区间的和

一.一维前缀和(模板)

1.题目:【模板】前缀和_牛客题霸_牛客网 (nowcoder.com)

给定一个长度为n的数组a1,a2,....ana1​,a2​,....an​.,接下来有q次查询, 每次查询有两个参数l, r,对于每个询问, 请输出al+al+1+....+aral​+al+1​+....+ar​

2.算法思想

<1>预处理出一个前缀和数组

dp[i]表示[1,i]区间内所有元素的和

dp[i]=dp[i-1]+nums[i]

<2>使用前缀和数组

[l,r]区间内的元素和为dp[r]-dp[l-1]

Q:为什么下标从1开始计数呢?

A:为了处理边界情况,防止越界返回

3.时间复杂度:O(q)+O(n)

4.代码实现

#include <iostream>
#include<vector>
using namespace std;int main() {int n,q;cin>>n>>q;//读入数据vector<int> nums(n+1);for(int i=1;i<=n;i++){cin>>nums[i];}//预处理一个前缀和数组vector<long long> dp(n+1);for(int i=1;i<=n;i++){dp[i]=dp[i-1]+nums[i];}//使用前缀和数组int l=0,r=0;while(q--){cin>>l>>r;cout<<dp[r]-dp[l-1]<<endl;}
}

二.二维前缀和(模板)

1.题目:【模板】二维前缀和_牛客题霸_牛客网 (nowcoder.com)

给你一个 n 行 m 列的矩阵 A ,下标从1开始。接下来有 q 次查询,每次查询输入 4 个参数 x1 , y1 , x2 , y2请输出以 (x1, y1) 为左上角 , (x2,y2) 为右下角的子矩阵的和,

2.算法思想

<1>预处理一个前缀和矩阵

dp[i][j]表示:[1,l]和[i,j]所围成的矩阵中所有元素的和

dp[i][j]=dp[i-1][j]+dp[i][j-1]+nums[i][j]-dp[i-1][j-1]

<2>使用前缀和矩阵

矩阵内元素和为:dp[x2][y2]-dp[x1-1][y2]-dp[x2][y1-1]+dp[x1-1][y1-1]

3.时间复杂度:O(m*n)+O(q)

4.代码实现

#include <iostream>
#include<vector>
using namespace std;int main() {int n,m,q;cin>>n>>m>>q;//读入数据vector<vector<int>> nums(n+1,vector<int>(m+1));for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>nums[i][j];}}//创建一个前缀和矩阵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]+nums[i][j]-dp[i-1][j-1];}}//使用前缀和矩阵int x1=0,y1=0;int x2=0,y2=0;while(q--){cin>>x1>>y1;cin>>x2>>y2;cout<<dp[x2][y2]-dp[x1-1][y2]-dp[x2][y1-1]+dp[x1-1][y1-1]<<endl;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/148892.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

打造你的专属主题-VitePress保姆级教程

本篇为vitepress系列教程&#xff0c;在开始前&#xff0c;若还不了解vitepress的小伙伴可以看一下以往文章&#xff1a; 不敲一行代码&#xff01;助你快速搭建属于自己的官网博客&#xff01;-VitePress保姆级教程 文章目录 VitePress主题配置准备自定义主题配置标题配置图标…

【软件文档资料】软件代码编写规范-交付文档支撑(Word原件)

&#xff08;一&#xff09;一开始就必须正确的使用规范 &#xff08;二&#xff09;简易性原则 &#xff08;三&#xff09;清晰性原则 &#xff08;四&#xff09;健壮性原则 &#xff08;五&#xff09;效率原则 软件资料清单列表部分文档清单&#xff1a;工作安排任务书&am…

visual studio 调试技巧

visual studio 调试技巧 概述 在使用visual studio 进行调试的时候&#xff0c;有几个调试方法很好用&#xff0c;这里做一些记录。 GTEST 单元测试 参考 VS2022创建C C GTEST工程 - Hello-FPGA - 博客园 (cnblogs.com) 内存查看 命令行测试动态库 附加到进程调试动态库 …

数造科技荣获“2024爱分析·数据智能优秀厂商”

近日&#xff0c;2024年第六届爱分析数据智能高峰论坛圆满举办。会议期间&#xff0c;“2024爱分析数据智能优秀厂商”榜单正式揭晓&#xff0c;数造科技凭借其卓越的技术创新能力与丰富的实践应用案例&#xff0c;脱颖而出&#xff0c;成功入选“数据智能优秀厂商”。 评选严苛…

青否数字人【电脑版】实景直播+视频直播正式发布!

9月份&#xff0c;我们团队去山东的多家直播基地、MCN 机构&#xff0c;和合作伙伴一起深入探讨了青否数字人在抖音直播的落地情况。 这一趟下来&#xff0c;收获满满&#xff0c;对青否数字人的下一步升级有了更清晰的规划。 今天&#xff0c;青否数字人电脑客户端迎来了大升级…

到底是谁配谁-《分析模式》漫谈33

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 “Analysis Patterns”的第二章有这么一句&#xff1a; The notion is that a person is responsible for the responsibilities of the post for the period of time that they are …

【C++】多态:深度剖析(多态、虚函数、抽象类、底层原理)

温馨提示&#xff1a;在观看本文前确保已经了解了C中继承的相关知识&#xff0c;若不了解&#xff0c;可以查看我的这篇文章进行学习&#xff1a;【C】继承&#xff1a;深度剖析-CSDN博客https://blog.csdn.net/2301_80555259/article/details/141829528?spm1001.2014.3001.55…

可视化大屏看阿里,阿里出品,必属精品。

阿里云有自己的可视化平台——dataV&#xff0c;经常会出一些高颜值、强交互的大屏&#xff0c;本期为大家分享一波。

c++难点核心笔记(一)

文章目录 前言C的应用领域 核心编程内存分区模型1.程序运行前2.程序运行后3.new操作符引用 函数1.概述和函数原型2.函数的定义和参数3.使用函数处理不同类型的数据4.微处理器如何处理函数调用函数的分文件编写 指针和引用什么是指针动态内存分配使用指针时常犯的编程错误指针编…

新一代图像生成E2E FT:深度图微调突破

文章地址&#xff1a;Fine-Tuning Image-Conditional Diffusion Models is Easier than You Think 项目主页&#xff1a;https://gonzalomartingarcia.github.io/diffusion-e2e-ft/ 代码地址&#xff1a;https://github.com/VisualComputingInstitute/diffusion-e2e-ft 机构&am…

数据结构:搜索二叉树

前言 在前面我们已经学习了二叉树的基础操作&#xff0c;但是&#xff0c;仅仅是二叉树&#xff0c;没有太大的作用啊&#xff0c;存数据效果没有顺序表和链表好&#xff0c;那为啥还要学二叉树呢&#xff1f; 这不就来了嘛&#xff0c;给二叉树增加一些性质&#xff0c;作用不…

剑侠情缘c++源码全套(增加缺失的头文件和相关的库,其它网上流传的都是不全的)剑网三源码

剑侠情缘c源码全套&#xff08;增加缺失的头文件和相关的库&#xff0c;其它网上流传的都是不全的&#xff09; 下载地址&#xff1a; 通过网盘分享的文件&#xff1a;剑侠情缘c源码全套&#xff08;增加缺失的头文件和相关的库&#xff0c;其它网上流传的都是不全的&#xff0…

飞睿智能3公里WiFi实时图传模块,隧道高速无线传输抗干扰,实时不卡顿

在数字化快速发展的今天&#xff0c;无线通信技术日新月异&#xff0c;其中WiFi实时图传模块凭借其高效、稳定、便捷的传输特性&#xff0c;正逐渐在各个领域崭露头角。特别是当我们谈论到3公里WiFi实时图传模块时&#xff0c;这不仅是对传统无线传输技术的一次革新&#xff0c…

父子Shell你了解多少?一起解读吧

一.source和点、bash \sh 、./script区别 1.source和点&#xff0c;执行脚本&#xff0c;只在当前shell环境中执行生效 2.指定bash\sh 解释器运行脚本&#xff0c;是开启subshell&#xff0c;开启子shell运行脚本 命令 3. ./script,都会指定shebang,通过解释器运行&#xff0c;…

PAT甲级-1090 Highest Price in Supply Chain

题目 题目大意 一个供应链由供应商、经销商、零售商组成。供应商作为根节点&#xff0c;售卖价格为P的商品&#xff0c;每经过一级经销商或零售商都会以高于r%的价格批发或出售。题目给出总节点数n&#xff0c;每个节点的编号从0到n-1&#xff0c;给出的每个值是该节点编号的索…

臀部筋膜炎最佳治疗方法

臀部筋膜炎的最佳治疗方法因个体差异而异&#xff0c;但通常包括以下几个方面&#xff1a; 一、药物治疗 非甾体抗炎药&#xff1a;如布洛芬、双氯芬酸钠等&#xff0c;这些药物通过抑制前列腺素合成来减少炎症和疼痛&#xff0c;适用于缓解轻至中度的急性发作期臀部筋膜炎引…

跨平台数据库工具DataGrip v2024.2全新发布——增加智能刷新功能

DataGrip 是一个跨平台的数据库工具可在Windows&#xff0c;OS X 和 Linux上使用。同时支持多种数据库&#xff0c;包含了SQL Server&#xff0c;Oracle&#xff0c;PostgreSQL&#xff0c;MySQL&#xff0c;DB2&#xff0c;Sybase&#xff0c;SQLite&#xff0c;Derby&#xf…

智慧农业的引擎:高标准农田灌区信息化的探索与实践

在现代农业的广阔图景中&#xff0c;智慧农业作为一股革新力量&#xff0c;正逐步重塑着传统农业的面貌。其中&#xff0c;高标准农田灌区的信息化建设不仅是智慧农业的重要引擎&#xff0c;更是实现农业可持续发展、提高资源利用效率的关键路径。 高标准农田灌区信息化的内涵…

828华为云征文|华为云Flexus云服务器X实例 基于CentOS系统镜像快速部署Laravel开源论坛

最近公司可热闹了&#xff01;大家都在为搭建博客论坛系统忙得不可开交&#xff0c;尤其是在选服务器这件事儿上&#xff0c;那叫一个纠结。 同事 A 说&#xff1a;“咱得选个厉害的服务器&#xff0c;不然这论坛以后卡得跟蜗牛爬似的可咋办&#xff1f;” 同事 B 回应道&#…

C++11语法(基础)【一】

目录 1. C11简介 2. 统一的列表初始化 2.1 &#xff5b;&#xff5d;初始化 2.2 std::initializer_list 3. 声明 3.1 auto 3.2 decltype 3.3 nullptr 声明&#xff1a;C11我会分几篇来讲&#xff0c;每一篇我都会讲几种特性。 1. C11简介 在2003年C标准委员会曾经提交了一份技术…