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

前缀和思想

何为前缀和

有一个数组a, 为  a_{1 }        a_{2}         a_{3 }      ......    a_{n }

前缀和   S_{i}  =   a_{1 }    +    a_{2}     +    a_{3 }   +   ......   a_{i}

有两个问题:   

1.如何求S_{i}?   只需要从前往后遍历,令S_{i} = S_{i-1 } + a_{i} 就可以了,最开始是S_{1} = S_{0 } + a_{1 }  ,定义 S_{0 } = 0

2. S_{i}有什么用?  能够快速地求出原数组中某一段的和,预处理的时间复杂度是O(n),而对于每次查询时间复杂度是O(1),例如求原数组中 [l,r]区间中所有的数的和 也就是a_{l }    +    a_{l+1 }     +    a_{l+2 }   +   ......   a_{r} ,如果没有前缀和数组的话,就要循环一遍才可以求出结果,他的时间复杂度是O(n),如果有前缀和数组,那么只需要 S_{r} - S_{l-1} 就能得到区间和,那么为什么是l-1,很简单,例如我们要求[1,3]区间和,也就是a_{1 }  +  a_{2}   +   a_{3 } , 这就是 S_{3} - S_{1-1}的 差

3.为什么数组是从 a_{1 } 开始,要定义 S_{0 } = 0 ?其实这主要是边界问题,我们要让每一个 S_{i} 的求值都能够用到统一的公式 ,我们求前缀和的公式是S_{i} = S_{i-1 } + a_{i},那么求 S_{1}就要有 S_{0} ,我们求[1,10]的区间和是 S_{10} - S_{0 } ,也需要 S_{0} ,这样就不需要额外讨论了 

题目

输入一个长度为 n的整数序列。

接下来再输入 m个询问,每个询问输入一对 l,r。

对于每个询问,输出原序列中从第 l个数到第 r个数的和。

输入格式
第一行包含两个整数 n和 m。

第二行包含 n 个整数,表示整数数列。

接下来 m 行,每行包含两个整数 l 和 r,
表示一个询问的区间范围。

输出格式
共 m行,每行输出一个询问的结果。

数据范围
1≤l≤r≤n,
1≤n,m≤100000,
−1000≤数列中元素的值≤1000
输入样例
5 3
2 1 3 6 4
1 2
1 3
2 4
输出样例
3
6
10

代码

 

#include <iostream>using namespace std;const int N = 100010;
int a[N];
int S[N];
int n, m;int main(void)
{cin >> n >> m;for (int i = 1; i <= n; i++){cin >> a[i];S[i] = S[i - 1] + a[i]; // 前缀和的初始化}int l, r;while (m--){cin >> l >> r;printf("%d\n", S[r] - S[l - 1]);}return 0;
}

完美运行,当然输入数据可以使用scanf,会比cin的速度快1倍,前缀和不是一个模版,而是一种思想

 

相关文章:

前缀和思想

何为前缀和 有一个数组a, 为 ...... 前缀和 ...... 有两个问题: 1.如何求? 只需要从前往后遍历,令 就可以了,最开始是 ,定义 0 2. 有什么用? 能够快速地求出原数组中某一段的和,预处理的…...

Llama2-Chinese项目:1-项目介绍和模型推理

Atom-7B与Llama2间的关系&#xff1a;Atom-7B是基于Llama2进行中文预训练的开源大模型。为什么叫原子呢&#xff1f;因为原子生万物&#xff0c;Llama中文社区希望原子大模型未来可以成为构建AI世界的基础单位。目前社区发布了6个模型&#xff0c;如下所示&#xff1a; FlagAl…...

论文于祥读及复现——《VDO-SLAM: A Visual Dynamic Object-aware SLAM System》

论文详读之------《一个视觉动态对象感知SLAM系统》 0. 出发点&#xff08;暨摘要&#xff09;1.引言2. 相关工作2.1 探索针对动态环境的健壮SLAM2.2 分别执行SLAM和运动对象跟踪(MOT)&#xff0c;作为传统SLAM的扩展&#xff0c;用于动态场景理解。2.3 对象SLAM&#xff08;通…...

nuxt3项目使用pdfjs-dist预览pdf

使用的包的源代码是 pdfjs - npm 但是我们实际上项目中使用的是pdfjs打包后的dist文件&#xff0c;也就是pdfjs-dist - npm 所以我们需要使用这个命令 npm i pdfjs-dist 我们可以克隆pdfjs这个包来看源代码&#xff0c;里面有使用的例子&#xff0c;也可以根据源代码自己打…...

mybatis-generator-maven-plugin使用

前提说明 数据库&#xff1a;MYSQL57Mybatis : http://mybatis.org/generator/index.html 操作说明 引入插件 <plugins><!-- MyBatis 逆向工程 插件 --><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generat…...

基于SpringBoot开发的停车位管理系统(调用百度地图api)

文章目录 项目介绍主要功能截图:前台:后台部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot开发的停车位管…...

STC8单片机PWM定时器+EC11编码器实现计数

STC8单片机PWM定时器+EC11编码器实现计数 📌相关篇《STC单片机+EC11编码器实现调节PWM输出占空比》📍《stc单片机外部中断+EC11编码器实现计数功能》🔖STC8系列支持此功能的型号: ✨从上面的相关篇中有通过通用定时器加外部中断以及常规方法实现驱动EC11编码器的方法。本…...

MediaBox助力企业一站式获取音视频能力

以一只音视频百宝箱&#xff0c;应对「千行千面」。 洪炳峰、楚佩斯&#xff5c;作者 大家好&#xff0c;今天我分享的主题是MediaBox——行业音视频数字化再加速。 根据权威数据表明&#xff0c;65%的行业数字化信息来自视频&#xff0c;基于此&#xff0c;音视频技术对于行…...

仅做笔记用:Stable Diffusion 通过 ControlNet 扩展图片 / 扩图

发觉之前的 Outpainting 脚本效果仍旧不是很理想。这里又找了一下有没有效果更好的途径来扩图。于是就找到了通过 ControlNet 的方式来实现效果更好的扩图。这里临时记录一下在 Stable Diffusion 怎么使用 ControlNet 来扩展图片。 下载 control_v11p_sd15_inpaint_fp16.safet…...

代码随想录算法训练营19期第49天

121. 买卖股票的最佳时机 视频讲解&#xff1a;动态规划之 LeetCode&#xff1a;121.买卖股票的最佳时机1_哔哩哔哩_bilibili 代码随想录 初步思路&#xff1a;贪心。 总结&#xff1a; 分别考虑2种情况&#xff1a; 【1】dp[i][0] 表示第i天持有股票所得最多现金 【2】…...

用shell脚本实现一个对数组求和的函数,数组通过实参传递给函数,写一个函数,输出当前用户的uid和gid,并使用变量接收结果

目录 1.实现一个对数组求和的函数&#xff0c;数组通过实参传递给函数 结果为&#xff1a; 2.写一个函数&#xff0c;输出当前用户的uid和id&#xff0c;并使用变量接收结果 结果为&#xff1a; shell脚本指令前七个网页链接&#xff1a; 八、shell中的分支语句 【1】ife…...

运算符,switch

目录 算术运算符 逻辑运算符 强制类型转换 自增自减运算符 ​编辑 三目运算符 A&#xff1f;B:C 逗号表达式 switch 算术运算符 除法的运算结果和运算对象的数据类型有关&#xff0c;两个都是int商就是int&#xff0c;被除数或者除数只要有一个是浮点型数据&#xff0c;…...

运行java命令出现 Error: Invalid or corrupt jarfile XXX.jar

朋友 我当你一秒朋友 朋友 我当你一世朋友 奇怪 过去再不堪回首 怀缅 时时其实还有 运行java命令出现 Error: Invalid or corrupt jarfile XXX.jar 基本可以断定&#xff0c;是jar不完整导致的。不完整&#xff01;&#xff01;&#xff01;记住关键字 检查1&#xff1a; …...

在找工作时的准备工作:结合现状,针对意向企业做好充分准备

在寻找工作时&#xff0c;充分准备是非常重要的。不仅要了解自己的现状和能力&#xff0c;还需要对意向企业进行深入了解&#xff0c;并提前准备好与该企业相关的技能和知识。尤其对于程序员来说&#xff0c;在面试IT技术岗位时&#xff0c;以下技巧可能会对你有所帮助&#xf…...

微服务·数据一致-事务与分布式事务

微服务数据一致-事务与分布式事务 概述 事务是计算机科学和数据库管理中的一个关键概念&#xff0c;用于确保数据的一致性和可靠想。事务管理是大多数应用程序和数据库系统中不可或缺的一部分。分布式事务扩展了事务的概念&#xff0c;用于多个分布式系统和服务的数据一致性管…...

GO语言篇之CGO

GO语言篇之CGO 文章目录 GO语言篇之CGO前言C代码嵌入GO代码C文件嵌入GO代码缺点 前言 Go语言可以通过内置的CGO调用C语言接口&#xff0c;从而实现C语言代码的交互&#xff0c;CGO提供了一种将Go代码嵌入到C代码中&#xff0c;或者从Go代码中调用C函数的方法 C代码嵌入GO代码…...

LVS负载均衡群集(NAT模式、IP隧道模式、DR模式)

目录 一、集群 1.1 含义即特点 1.2 群集的类型 1.3 LVS 的三种工作模式&#xff1a; 1.4 LVS 调度算法 1.5 负载均衡群集的结构 1.6 ipvsadm 工具 二、NAT模式 LVS-NAT模式配置步骤&#xff1a; 实例&#xff1a; 配置NFS服务器192.168.20.100 配置web1服务器192.168…...

PCL 使用克拉默法则进行三点定圆(二维)

目录 一、算法原理二、代码实现三、结果展示四、参考链接五、测试数据本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 见:使用克拉默法则进行三点定圆(二维) 二、代码实现 #include <iostream>...

MCAL实战二(S32K324-NXP EB tresos GPT驱动配置详解)

目录 前言 一、配置之前 第一步 找时钟源 第二步 配置MCU时钟 二、开始配置 第一步 新建时钟参考点 第二步 硬件通道使能 第三步 配置连接 <...

Python 图形化界面基础篇:什么是 Tkinter 以及为什么选择它

Python 图形化界面基础篇&#xff1a;什么是 Tkinter 以及为什么选择它 引言第一部分&#xff1a;什么是 Tkinter&#xff1f; 1. 跨平台性2. Python 标准库的一部分3. 易学易用4. 社区和资源 第二部分&#xff1a;为什么选择 Tkinter&#xff1f; 1. 简单易用2. 跨平台兼容性3…...

Learning From Data 中英文对照 1.THE LEARNING PROBLEM (第7页)

为了简化感知器公式的表示法&#xff0c;我们将把偏差aaWpb与其他权重合并到一个向量中[wo&#xff0c;1&#xff0c;。…&#xff0c;wd]“&#xff0c;其中T表示向量的转置&#xff0c;所以w是acolumn向量&#xff0c;我们也将x作为列向量&#xff0c;并将其修改为x[o&#x…...

自己编译静态ffmpeg freetype2 not found问题解决

整理好依赖的ffmpeg仓库地址&#xff1a; https://github.com/pyke369/sffmpeg 报错&#xff1a;ERROR: freetype2 not found using pkg-config 网上查询说是需要安装freetype-devel ​​​​​​​sudo apt install libfreetype6-dev 安装后还是报一样的错&#xff0c;实…...

基于 Python 的音乐流派分类

音乐就像一面镜子&#xff0c;它可以告诉人们很多关于你是谁&#xff0c;你关心什么&#xff0c;不管你喜欢与否。我们喜欢说“you are what you stream” - Spotify Spotify 拥有 260 亿美元的净资产&#xff0c;是如今很受欢迎的音乐流媒体平台。它目前在其数据库中拥有数百…...

代码随想录训练营第49天|121.买卖股票的最佳时机,122.买卖股票的最佳时机II

代码随想录训练营第49天|121.买卖股票的最佳时机&#xff0c;122.买卖股票的最佳时机II 121.买卖股票的最佳时机文章思路代码 122.买卖股票的最佳时机II文章思路代码 总结 121.买卖股票的最佳时机 文章 代码随想录|0121.买卖股票的最佳时机 思路 维护一个历史最低价&#x…...

1-3 AUTOSAR软件架构

目录 一、简介 二、基础软件层 BSW 2.1 微控制器抽象层 2.2 ECU抽象层 2.3 复杂的驱动程序 2.4 服务层 三、运行时环境 RTE 四、应用软件层 SWC 一、简介 分层架构是实现软硬件分离的关键&#xff0c;它使汽车嵌入式系统控制软件开发者摆脱了以往 ECU 软件开发与验证时…...

Dajngo02_第一个Django案例

Dajngo02_第一个Django案例 经过之前学习&#xff0c;我们已经可以创建Django环境 现在开始尝试快速使用Django开发一个案例 案例&#xff1a;利用Django实现一个查看当前时间的web页面。 在django中要提供数据展示给用户,一般情况下我们需要完成3个步骤&#xff1a; 在urls.…...

R语言分析糖尿病数据:多元线性模型、MANOVA、决策树、典型判别分析、HE图、Box's M检验可视化...

全文链接&#xff1a;https://tecdat.cn/?p33609 Reaven和Miller&#xff08;1979&#xff09;研究了145名非肥胖成年人的葡萄糖耐量和胰岛素血液化学指标之间的关系。他们使用斯坦福线性加速器中心的PRIM9系统将数据可视化为3D&#xff0c;并发现了一个奇特的图案&#xff0c…...

有效回文字符串(Valid palindrome)

题目描述 思路分析 代码实践 java: public class Solutation1 {//定义一个方法&#xff0c;判断是否是有效数字或者字母private static boolean isValid(char c) {//如果不是字母或者数字&#xff0c;那就返回一个flase//这里调用了Character类里面的方法return Character.i…...

9月9日,每日信息差

今天是2023年9月9日&#xff0c;以下是为您准备的12条信息差 第一、前晨汽车动力电池项目落地厦门&#xff0c;第二十届中国国际投资贸易洽谈会于2023年9月8日在福建省厦门市开幕。会上&#xff0c;前晨汽车科技有限公司与福建省厦门市集美区进行了前晨汽车动力电池项目签约&a…...

Java——》synchronized编译

推荐链接&#xff1a; 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…...

wordpress调用文章分类/搜索热度查询

表是5字段int类型&#xff0c;第一个字段是主健&#xff0c;自增字段 表结构&#xff1a; id int Uncheckedbillno bigint Uncheckedopid int Checkedbillopid int Checkedtag int Checked 存储过程&#xff1a; CREATE proc [dbo].[inbill]bills bigint,bille bigint,bil…...

用阿里巴巴店铺做公司网站怎么样/网站建设制作流程

文末获取完整PDF这份PDF涵盖了数仓设计和建设的一些重要概念和知识点&#xff0c;也有很多是面试经常问的&#xff0c;是学习数仓必备的理论知识。这份PDF可以作为数仓工具书的辅助资料进行学习&#xff0c;毕竟数仓工具书比较厚&#xff0c;对于很多人很难抓住其中的重点。如何…...

图片上传网站变形的处理/seo网络营销招聘

目录 1. 下载IEDriverServer.exe 2. 将IEDriverServer.exe或IEDriverServer.64.exe放在C:\ProgramData\Anaconda3\Scripts下面 3. 测试代码 1. 下载IEDriverServer.exe 我在太平洋电脑网下载的&#xff0c;得到两个IEDriverServer.exe和IEDriverServer.64.exe&#xff0c;这…...

有域名怎么建网站/站长统计app软件大全

为什么80%的码农都做不了架构师&#xff1f;>>> 使用top命令&#xff0c;查看cpu占用过高的java PID &#xff08;如PID9876&#xff09;使用ps aux|grep PID &#xff08;ps aux|grep 9876&#xff09;查看是那个java程序占用cpu 。ps -mp PID -o THREAD,tid,ti…...

科讯cms怎么做网站地图/关键词优化排名哪家好

目录前言第一种解法&#xff1a;先排序再找第二种解法&#xff1a;线性布局总结前言 这题太简单了&#xff0c;就是从数组里找出三个数乘积最大项目网址&#xff1a;https://leetcode-cn.com/problems/maximum-product-of-three-numbers/ 第一种解法&#xff1a;先排序再找 …...

企业网站设计谁家做了的好/东莞海外网络推广

NanoMQ 继续保持稳步更新&#xff0c;0.9.0 将于 7 月初正式发布。此版本为大家带来了 2 个重要的功能更新&#xff1a;规则引擎和支持 QUIC 的 NanoSDK。同时还增加了离线数据缓存配置&#xff0c;各项性能优化和缺陷修复也在持续进行中。 轻便易用的嵌入式规则引擎 规则引擎…...