蓝桥杯省赛最后一天冲刺!!

1、一维前缀和

        例如:给你n个数组array, q次询问,让你求出 [L, R]的区间和。

题目:

给出数组 [1, 3, 7, 5, 2] ,求出 [2, 4] 这个区间的区间和。

分析:

我们求出前 n个数 的和 sum,求区间和,使用后面位置的数字和减去前面位置的数字和。

indedx01234
array1375

2

sum 14111618

 (可以自己求和算一下,都很简单)

根据上面求和的过程,我们可以提取出不同数组的求和过程:
sum[i] = sum[i-1] + array[i]  L>0
sum[0] = array[0]             L=0

 求出前缀和之后,进行求区间和:

当 L> 0 时: 

sum[2, 4] = sum[4] - sum[2-1] = sum[R] - sum[L-1] = 18 - 4 = 14

验证:7 + 5 + 2 = 14,

当 L = 0时:

sum[0, 3] = sum[3] = sum[R] = 16

验证:1 + 3 + 7 + 5 = 16

根据以上运算与验证过程,提取出求区间和的计算过程:
sum[L,R] = sum[R] - sum[L-1]   L>0
sum[L,R] = sum[R]              L=0

代码实现:

我自己摸索着写的,可能会有更简洁的代码,不过我的水平只能写出这样了。 

def profix_and(array, l, r):# 定义前缀和sum = [0 for _ in range(len(array))]sum[0] = array[0]for i in range(len(array)):if i > 0:sum[i] = sum[i - 1] + array[i]# 计算区间差值if l > 0:return sum[r] - sum[l-1]else:return sum[r]array = [1, 3, 7, 5, 2]print(profix_and(array, 2, 4))

实现了上面的例子,也可以自己指定数组和区间进行验证。

2、一维数组的差分

某个有n个数的数组,进行m个操作 [L , R] + value,进行询问后输出m次操作后的数组。

题目:

数组array=[1, 3, 7, 5, 2], 在 [ 2,4 ] 区间上加5, 在[ 1, 3 ]区间上加2, 在 [ 0, 2 ]区间上加3,进行这样三个操作。求出最后数组array的结果。

思路分析

利用差分数组将所有要进行的加减操作放在一个数组中,对差分数组算出前缀和,最后将差分数组的前缀和与原数组相加即为最后的结果。

手动计算:
index01234
array13752
[2, 4]+51312107
[1, 3]+21514127
[0, 2]-3-2211127
差分数组

在实际代码中,把差分数组d全部都赋值为0即可,不需要计算出来

d[i] = array[i] - array[i-1]
差分标记 
[L,R] = d[L]+value, d[R+1]-value

代码实现: 

我自己写的代码,不一定是最优的,我觉得我能写出来就不错了哈哈哈

array = [1, 3, 7, 5, 2]
d = [0 for _ in range(len(array)+1)]  # 定义差分数组# 将差分标记封装到函数中
def add(l, r, v):d[l] += vd[r+1] -= v# 进行加减操作
add(2, 4, 5)
# print(d)
add(1, 3, 2)
# print(d)
add(0, 2, -3)
# print(d)# d的前缀和
sum_d = [0 for _ in range(len(array))]
sum_d[0] = d[0]
for i in range(len(sum_d)):sum_d[i] = sum_d[i-1] + d[i]# print(sum_d)# 再将sum_d 与 array相加即为所求结果
for i in range(len(array)):array[i] += sum_d[i]print(array)

家人们,学不完了啊啊啊啊,没事就这样吧,我真受不了了,把能做的都做上吧,尽人事,听天命吧,我希望我写的这些笔记能给我换个省三吧,不要求省一了,我想好好歇歇了,打算法比赛太累了,心力交瘁的。本来就是想备战蓝桥杯记录一下自己的学习,没有想到还收获了六百多个粉丝宝宝,算是意外之喜了。

等我考完蓝桥杯,我就要潜心学习了,先把自己自身的硬实力提升上去,再去做一些自己想做的一些项目。后续我基本上会每天更新自己的学习总结笔记的,每天学的东西可能都不一样,因为我想一出是一出,但是我会分好专栏的,大家如果有想要一起进步的,记得关注我哟~ 

最后祝大家都取得理想的成绩!!!相信自己!!!一定能行!!!

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

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

相关文章

[大模型]基于 ChatGLM3 和 LangChain 搭建知识库助手

基于 ChatGLM3 和 LangChain 搭建知识库助手 环境配置 在已完成 ChatGLM3 的部署基础上,还需要安装以下依赖包: pip install langchain0.0.292 pip install gradio4.4.0 pip install chromadb0.4.15 pip install sentence-transformers2.2.2 pip inst…

微服务项目实战-黑马头条(一):环境搭建 + APP登录功能【前端静态资源+nginx反向代理+网关+过滤器】

文章目录 一、搭建nacos二、初始工程的搭建2.1 环境准备2.2主体结构 三、APP登录3.1 需求分析3.2 表结构分析3.3 接口定义3.4 功能实现 四、接口工具postman、swagger、knife4j4.1 postman4.2 swagger4.3 knife4j 五、网关5.1 网关搭建5.2 全局过滤器实现jwt校验 六、前端集成6…

目前电视盒子哪个最好?测评工作室盘点超强电视盒子推荐

每年我们会进行数十次电视盒子测评,对各个品牌的产品都有深入的了解,最近我们收到了很多私信不知道目前电视盒子哪个最好,这次我们结合配置总结了五款性能超强的电视盒子推荐给各位,预算足够想买高配电视盒子的朋友们可不要错过啦…

高级Java开发工程师手把手教你用AI人工智能帮你写JAVA代码实际案例二(生成自定义springboot定时器组件)全网唯一

高级Java开发工程师手把手教你用AI人工智能帮你写JAVA代码实际案例二全网唯一 一、需求背景案例说明 笔者有个实际的生产项目,想自己自定义定时器到数据库表里面,不想配置到配置文件里面,很麻烦!这次想用AI帮我写代码&#xff0…

蓝桥杯算法题:栈(Stack)

这道题考的是递推动态规划,可能不是很难,不过这是自己第一次靠自己想出状态转移方程,所以纪念一下: 要做这些题目,首先要把题目中会出现什么状态给找出来,然后想想他们的状态可以通过什么操作转移&#xf…

学习数通HCIE选择誉天有什么优势?

誉天数通课程亮点 课程内容详实,千万级实训环境 涵盖数通技术全场景热门技术,涉及传统园区网,虚拟化园区网,广域互联技术,数据中心网络,网络自动化运维 专业机房环境,全真机教学演示&#xf…

蓝桥杯考前准备— — c/c++

蓝桥杯考前准备— — c/c 对于输入输出函数 如果题目中有要求规定输入数据的格式与输出数据的格式,最好使用scanf()和prinrf()函数。 例如:输入的数据是 2020-02-18,则使用scanf("%d-%d-%d",&year,&mouth,&day)即可…

模块化组合优势凸显钡铼IOy系列轻松应对大规模工业自动化工程

模块化组合是钡铼IOy系列独立式I/O模块的一大优势,它为大规模工业自动化工程提供了灵活性、可扩展性和定制性,从而轻松应对不同规模和复杂度的工厂应用。以下是关于模块化组合优势的详细解析: 1. 灵活性和定制性 模块化设计使得钡铼IOy系列…

小鸡宝宝考考你每匹斑马身上的条纹都不相同吗?蚂蚁庄园4.13答案

蚂蚁庄园是一款爱心公益游戏,用户可以通过喂养小鸡,产生鸡蛋,并通过捐赠鸡蛋参与公益项目。用户每日完成答题就可以领取鸡饲料,使用鸡饲料喂鸡之后,会可以获得鸡蛋,可以通过鸡蛋来进行爱心捐赠。其中&#…

【工具-工具指南】

项目-开发工具 ■ 编辑器■ Xmind ■ UI交互设计■ AxureRP9 ■ 项目管理■ boardmix■ excalidraw ■ Markdown■ MarkText■ Typora■ Ulysses■ Notable■ VNote■ Mou■ Bears■ Notion■ 有道云■ 印象笔记 ■ 硬件画图■ AD■ Allegro■ PADS■ Eagle■ Altium■ Fritzin…

【NC23803】DongDong认亲戚

题目 DongDong认亲戚 并查集 思路 并查集模板题&#xff0c;不过这道题的并查集使用到的不是抽象的数组&#xff0c;而是字符串&#xff0c;如果要以字符串为键的话&#xff0c;则需要用到哈希映射。 代码 #include <iostream> #include <string> #include <…

软考数据库---案例专题三:关系规范化

1. 常考的几个问题 1.1、找候选码&#xff1a; 记住候选码的含义&#xff1a;候选码可以决定关系模式中的所有属性&#xff0c;且候选码的任何一个真子集都不能单独决定全属性。 1.2、是否满足某一范式&#xff0c;或最高可达到第几范式&#xff1a; 将每一个范式的定义记牢…

源码安装 AMD 的 gpu BLAS

1,预备环境 安装 ROCm 2,下载预备源代码 git clone --recursive https://github.com/ROCm/rocBLAS.git cd rocBLAS git checkout rocm-6.0.2 3, 编译 Debug 版本 开启 cmake 变量&#xff0c;显示编译命令细节 -DCMAKE_VERBOSE_MAKEFILEON export CXX/opt/rocm/bin/hipcc…

Linux命令学习—linux 的硬件管理

1.1、linux 的硬件管理 1.1.1、计算机的硬件管理 在 linux 下&#xff0c;计算机所有设备是以文件的形势存在的。 在 linux 下查看硬件信息 ①、lspci 列出所有的 PCI 设备 ②、fdisk -l 查看存储设备信息 ③、查看/proc 目录下相应的文件来查看一些设备信息 cat /proc/cp…

在linux系统下安装node.js

CentOS 或 Fedora 上安装 Node.js&#xff1a; 使用 yum 安装&#xff08;适用于 CentOS 7 及更早版本&#xff09;&#xff1a; 执行以下命令来安装 Node.js 和 npm&#xff1a; sudo yum install nodejs npm 安装 Node.js 和 npm&#xff1a; 执行以下命令来安装 Node.js 和…

大型网站系统架构演化

大型网站质量属性优先级&#xff1a;高性能 高可用 可维护 应变 安全 一、单体架构 应用程序&#xff0c;数据库&#xff0c;文件等所有资源都在一台服务器上。 二、垂直架构 应用和数据分离&#xff0c;使用三台服务器&#xff1a;应用服务器、文件服务器、数据服务器 应用服…

Mongo 报错 Can‘t canonicalize query: BadValue $in needs an array

一、遇到的问题 Mongo in查询 [ UserId > array($in>$userIds)] $userIds数组不是连续索引&#xff0c;报错Cant canonicalize query: BadValue $in needs an array 二、解决 array_values($userIds) 重新索引一下变成连续索引即可。 Mongo in查询的数组要是连续索…

凡尔码搭建物流消防安全巡查系统

物流行业在现代经济中扮演着重要角色&#xff0c;由于物流过程涉及到大量的货物运输和存储&#xff0c;伴随着存在安全隐患、消防安全、设备设施安全等问题&#xff1b;安全问题也为物流企业管理者们需要高度关注的重要问题之一&#xff1b;近年来&#xff0c;随着消防安全管理…

华为校园公开课走入上海交大,鸿蒙成为专业核心课程

4月12日&#xff0c;华为校园公开课在中国上海交通大学成功举办&#xff0c;吸引了来自计算机等相关专业的150余名学生参加。据了解&#xff0c;由吴帆、陈贵海、过敏意、吴晨涛、刘生钟等教授在中国上海交通大学面向计算机系本科生开设的《操作系统》课程&#xff0c;是该系学…

揭秘大前端开发方向的新机遇!

众所周知&#xff0c;华为开发者大会2023&#xff0c;宣布不再兼容安卓&#xff0c;同时宣布了“鸿飞计划”&#xff0c;欲与iOS、安卓在市场三分天下&#xff0c;这对中国国产操作系统而言&#xff0c;具有划时代的意义。 鸿蒙应用开发的兴起&发展 鸿蒙操作系统是华为自…