前缀和-蓝桥杯

news2024/11/18 14:39:20

一、前缀和的概念

  • 数组a[0]~ a[n-1],前缀和sum[i]等于a[0] ~ a[i]的和:

sum[0] = a[0]

sum[1] = a[0] + a[1]

sum[2] = a[0] + a[1] +a[2] ......

  • 在O(n)时间内求所有前缀和:

sum[i] = sum[i-l] +a[i]

  • a[0]一般不用。

二、前缀和与区间问题

  • 预计算出前缀和,能快速计算出区间和:

a[i] + a[i+1] + ... + a[j-1] + a[j] = sum[j]- sum[i-1]

  • 复杂度为O(n)的区间和计算,优化到了O(1)的前缀和计算。

  • 二分法是一种求解的方法。

三、前缀和与差分

  • 维差分数组 D[k] = a[k] - a[k-1],即原数组a[]的相邻元素的差

  • a[k]= D[1]+ D[2]+ ... + D[k]

  • a[ ]是D[ ]的前缀和。

  • 差分是前缀和的逆运算: 把求a[k]转化为求D的前缀和。

四、差分数组: 提升修改的效率

  • 把区间[L,R]内每个元素a[ ]加上d,只需把对应的D[ ]做以下操作:

  • 把D[L]加上d------>D[L] += d

  • 把D[R+1]减去d------>D[R+1] -= d

  • 利用D[ ],能极快解决修改区间[L,R]内元素的目的 。原来需要O(n)次计算,现在只需要O(1)。

  • 说明:前缀和a[x]= D[1] + D[2] + ... + D[x],有:

  • 1≤x≤L,前缀和a[x]不变;

  • L≤x≤R,前缀和a[x]增加了d;

  • R≤x≤N,前缀和a[x]不变,因为被D[R+1]中减去的d抵消了

五、真题实例(196号)


  • 题意

给定一个数组a[ ],一次操作是对连续的3个数做加减,经过多次操作后得到的数组,其中有一个数的绝对值最大;问这个最大的绝对值能达到多小。

  • 思考

  • 所有加减操作都是在数组内部进行,对于整个数组的和不会有影响。

  • 一次操作是对连续的3个数a[i-1]、a[i]、a[i+1],根据:

a[1] = a[1]+a[2]

a[3] = a[3]+a[2]

a[2] = a[2]-2a[2]

  • 三个数的和不变,由此联想前缀和。

  • 一次操作后的前缀和:

a[i-1]更新为a[i] + a[i-1],s[i-1]的新值等于原来的s[i]。

a[i]更新为-a[i],s[i]的新值等于原来的s[i-1]。

a[i+1]更新为a[i] + a[i+1],s[i+1]的值保持不变。

  • 结论:经过一次操作后,s[i]和s[i-1]互相交换,s[i+1]不变,s[i-1]、s[i]、s[i+1]这3个数值还在,没有出现新的数值。

  • 题目中对a[ ]的多次操作后的一个结果,对应了前缀和s[ ]的一种排列。

  • 因为a[i] = s[i]- s[i-1],对a[ ]多次操作后,新的a[ ]是:

a[1]= s[1]- s[0],a[2]= s[2] - s[1],......,a[n] = s[n] - s[n-1]

  • 经过以上转换,题目的原意:“对连续3个数做加减操作后,求最大的al能达到多小”,变成了简单问题:“数组s[ ],求max{|s[1]-s[0],|s[2]-s[1]|,.., |s[n] -s[n-1]|},且尽量小”,s[0]和s[n]保持不动,其他s[ ]可以随意变换位置。

  • 代码

  • 解析

  • 代码

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

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

相关文章

C语言结构体(初阶)声明、初始化、成员访问、传参

目录结构体类型的声明结构体变量的定义和初始化结构体成员访问结构体传参1.结构体类型的声明//1. struct Book {char name[20];int price; //成员列表 }b3,b4,b5;//全局变量 int main() {struct Book b1;//b1,b2局部变量struct Book b2;return 0; }//2. struct Book {char n…

重磅!ChatGPT席卷全球,Salesforce将推出EinsteinGPT!

2月9日,Salesforce首席执行官Marc Benioff在Twitter上发布了这样一则推文,表示将于3月7日的TrailblazerDX 23上发布Salesforce EinsteinGPT,随后Salesforce的官方Twitter也进行了转发。 虽然还没有正式的新闻稿,但不少业内人士猜测…

C++【模板初阶】

✨个人主页: Yohifo 🎉所属专栏: C修行之路 🎊每篇一句: 图片来源 No one saves us but ourselves, no one can and no one may. We ourselves must walk the path. 除了我们自己,没有人能拯救我们&#xf…

FreeRTOS-Tickless低功耗模式 | FreeRTOS十四

目录 说明: 一、低功耗模式简介 1.1、STM32低功耗模式 二、Tickless模式 2.1、Tickless模式如何功耗 2.2、Tickless模式设计思想 2.3、为了降低功耗,又不影响系统运行,怎么能做到呢? 三、Tickless模式修改配置 3.1、配置…

如何提升 ETF 期权隐含波动率和希腊值的计算速度?

期权的隐含波动率可以反应市场对未来的预期,通常使用牛顿法和二分法来计算。这两种方法都需要频繁迭代,且迭代次数不能确定,核心代码无法向量化,因此只能通过循环来逼近求解。这就导致在期权相关计算中,隐含波动率往往…

PO模式在Selenium中简单实践

初识PO模式 PO(PageObject)是一种设计模式。简单来说就是把一些繁琐的定位方法、元素操作方式等封装到类中,通过类与类之间的调用完成特定操作。 PO被认为是自动化测试项目开发实践的最佳设计模式之一。 在学习PO模式前,可以先…

InstructGPT笔记

一、InstructGPT是在GPT3上微调,ChatGPT是在GPT3.5上微调 二、该论文展示了怎么样对语言模型和人类意图之间进行匹配,方法是在人类的反馈上进行微调。 **三、方法简介:**收集很多问题,使用标注工具将问题的答案写出来&#xff0…

大数据面试题flume篇

1.Flume 的Source,Sink,Channel 的作用?你们Source 是什么类型? 1. 作用 (1)Source组件是专门用来收集数据的,可以处理各种类型、各种格式的日志数据,包括 avro、thrift、exec、jm…

Nginx介绍及安装(windows版,Linux版)

目录 一、Nginx介绍 1、Nginx优势 2、Nginx作用 3、部署静态资源 4、代理 5、负载均衡 二、Nginx安装步骤(windows版) 三、Nginx安装步骤(Linux版) 1、官网下载安装包,下载完之后上传到Linux系统上 2、在Lin…

股票量化策略是如何被执行出来的?

在股票量化方面,很多投资者是不知道怎么样挖掘量化策略,便在量化交易接口方面会通过股票交易接口将数据慢慢挖掘出来,就简单的通过api接口调用数据方面,直接通过交易接口端输出交易持仓数据,并且通过交易系统对数据的筛…

什么是“镜像浏览”?文件夹加密后的镜像浏览有什么用?

电脑中的文件夹经常用来储存各种重要文件,加密保护成为很多人的选择,而夏冰加密软件拥有各种适用于不同场景的文件夹加密软件,备受用户喜爱。在我们打开加密文件夹之后,我们可以在加密控制面板中发现“镜像浏览”的按钮&#xff0…

Sharding-jdbc

一、概念理解垂直切分:包含垂直分库和垂直分表1.1、垂直分库 :专库专用(按照业务类型对表分类)1.2、垂直分表:基于数据表的列(字段)为依据切分的,是一种大表拆小表的模式。1.3、垂直…

【Python--torch(激活函数说明+代码讲解)】激活函数(sigmoid/softmax/ELU/ReLU/LeakyReLU/Tanh)

【Python–torch】激活函数(sigmoid/softmax/ELU/ReLU/LeakyReLU/Tanh) 文章目录【Python--torch】激活函数(sigmoid/softmax/ELU/ReLU/LeakyReLU/Tanh)1. 介绍2. 常用激活函数说明2.1 Sigmoid2.1.1 公式2.1.2 图像2.1.3 代码解读2.2 Softmax2.2.1 公式2.2.2 代码解读2.3 ELU2.…

荧光探针Pyrene-PEG2-Propargyl,芘甲酰胺-二聚乙二醇-丙炔

Pyrene-PEG2-Propargyl物理参数: CAS号:N/A | 英文名:Pyrene-PEG2-Propargyl |中文名:芘甲酰胺-二聚乙二醇-丙炔分子式:C24H21NO3分子量:371.44纯度标准:95%外形颜色:淡黄色或白色固…

shell学习4

目录 一、统计文本中的词频 二、压缩javascript 三、打印文件的或行中的第n个单词或列---awk 3.1 利用awk打印文件中每行中的第五个单词。 3.2 利用awk打印当前目录下的文件的权限和文件名 3.3 利用awk打印从M行到N行这个范围内的所有文本 3.4 利用awk 部分提取文件中的内…

opencv复习

文章目录图像衡量结果(损失函数)预测的好坏前向传播 反向传播图像 实质是矩阵 长 宽 像素通道(0-255 0 黑 255 亮) 假设这里做一个10分类 行向量✖列向量是一个数 分类 最后的结果是一个各个分类的概率值 这里的b是偏置项&…

学校节能降耗减排方案——能耗监管平台的建设及效果剖析

摘要:作为崭新的校园能耗管理手段,能耗监测平台以传统管理方式无法企及的优势有力地提升了高校能源管理工作的水平.从而受到了相关管理者的青睐。本文梳理总结了高校能耗监测平台的基本组成和优势特点,同时对能耗平台建设和使用中…

nginx设置重定向跳转后ip:[端口]/abc变成ip/abc而报错404

nginx设置重定向跳转后 ip:[端口]/abc 变成 ip/abc 而报错404nginx配置:server {listen 80;server_name _;client_max_body_size 300m;absolute_redirect off;location / {root html;index index.html index.htm;proxy_set_header X-Real-IP $remote_a…

【nodejs-04】黑马nodejs学习笔记04-MySQL简介及安装

文章目录1.数据库的基本概念1.1什么是数据库1.2 常见的数据库及分类1.3 传统型数据库的数据组织结构2.安装并配置MySQL2.1 了解需要安装哪些MySQL相关的软件2.2 MySQL 在 Mac 环境下的安装2.3 MySQL 在 Windows 环境下的安装1.数据库的基本概念 1.1什么是数据库 数据库&#x…

JavaWeb学习

文章目录Tomcat 详解1 Tomcat 安装2 默认端口号3 面试题4 编写与发布一个网站Http 详解1 http 请求2 http 响应3 面试题Tomcat 详解 1 Tomcat 安装 进入Tomcat官网下载压缩包:https://tomcat.apache.org/ 将压缩包解压即可直接使用 启动Tomcat:bin目录下startup.b…