算法基础之线段树

文章目录

    • 线段树

线段树

线段树的原理十分简单,但是在代码上会相对复杂一点

他也是用来维护一个序列,是一个完全二叉树的形状

对于每一个节点是一个结构体

struct Node
{
	int L,R;  
  	int sum; // 以和为例
};

假设序列为1到7,那么根节点存的就是这7个数的总和,如果区间长度不是1的话,就会平均分成两部分,这两部分就是根节点的子节点,如此递归下去

屏幕截图 2024-01-25 114142.png

他有两个操作,第一个操作是单点修改,是一个递归的过程,只用修改信息需要变化的节点,我们需要改变叶子节点,然后回溯时重新计算即可

第二个操作称之为区间查询,查询时,如果有查询区间可以包含某一个区间,那么就直接返回,如果是不包含,那么就是进行递归,直到包含,然后进行计算再回溯

线段树中有四个函数

第一个是pushup,用子节点信息更新当前节点信息,这个一般不用写,就一句话

第二个是build,在一段区间上初始化线段树

第三个是modify,是修改操作

第四个是query,查询操作

我们之后在题目中实践即可

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

EasyCVR视频融合平台雪亮工程视频智能监控方案设计与应用

随着科技的不断发展,视频监控已经成为城市安全防范的重要手段之一。为了提高城市安全防范水平,各地纷纷开展“雪亮工程”,即利用视频智能监控技术,实现对城市各个角落的全方位、全天候监控。本文将介绍一种雪亮工程视频智能监控方…

Windows本地如何部署Jupyter+Notebook并结合内网穿透实现远程访问?

文章目录 1.前言2.Jupyter Notebook的安装2.1 Jupyter Notebook下载安装2.2 Jupyter Notebook的配置2.3 Cpolar下载安装 3.Cpolar端口设置3.1 Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 在数据分析工作中,使用最多的无疑就是各种函数、图表、…

2212电机 与 Simonk 30A 电调 调速测试记录

硬件信息 一、2212电机 适配 F330、F450、F550机架 重量:52克 尺寸:28mm*24mm 支持锂电:3s~4s锂电池 电调:20~40A 二、Simonk 30A 电调 重量:25克 尺寸:40 * 23 * 8mm 输入电压:2s~4s&…

使用__missing__方法实现映射表多格式主键

背景介绍 在python中,我们经常使用字典类型实现映射表的功能,通过字典的主键遍历获取对应的值,从而实现从一个值映射到另一个值的功能 但是这种映射是十分硬性的,例如,假如我的映射表为{‘1’:one&#x…

C#学习(十)——WPF重构与美化

一、Entity Framework Core 特点:【跨平台】,【建模】,【查询、更改、保存】,【并发】,【事务】,【缓存】,【数据迁移】 EF的组件 二、重构:构建数据模型 项目延续C#学习(九)的 项…

Unity通用渲染管线升级URP、HDRP

Unity通用渲染管线升级URP、HDRP 一、Build-in Pipline升级到 URP 一、Build-in Pipline升级到 URP 安装URP包 升级所有材质(升级完成后材质会变成紫红色,Shader丢失,此为正常现象) 创建 UniversalRenderPipelineAsset 配置文…

java web 校园健康管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web校园健康管理系统是一套完善的java web信息管理系统 ,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysq…

深入理解工厂模式:创建可复用的对象实例

这里写目录标题 前言简单工厂模式工厂方法模式抽象工厂模式总结 前言 工厂模式是一种常用的设计模式,它可以帮助我们更好地组织和管理代码,将对象的创建和使用分离开来,提高代码的可维护性和扩展性。 在软件开发中,我们经常会遇到…

C++拷贝构造函数、赋值学习整理:

拷贝构造函数: 概念: 构造函数的第一个参数,是类本身的const引用(一般情况下没有其他参数,少数情况:其他参数必须有默认值!)称此类构造函数为拷贝构造函数 特征: 1&am…

使用Animate.css动画库

1.网站:Animate.css | A cross-browser library of CSS animations. 样式:Animate.css 一款强大的预设css3动画库 (jq22.com) 一、引入 命令提示符/终端: npm install animate.css --save 二、 全局导入(在main.js&#xff0…

Obsidian笔记软件结合cpolar实现安卓移动端远程本地群晖WebDAV数据同步

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

如何编写高质量测试用例?

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,薪资嘎嘎涨 测试场景: 为登录功能设计测试用例 测试员为什么要会编测试用例 测试员的目标是…

HAL STM32+EC11编码器实现增减调节及单击、双击、长按功能

HAL STM32EC11编码器实现增减调节及单击、双击、长按功能 📺实现效果演示: 📘内容提要 📝本文主要实现,通过STM32 HAL库开发,实现的EC11编码器功能,按键结合状态机思想实现的拓展单击、双击、…

win下安装es可视化工具——elasticsearch head(win_Elasticsearch)

一、head简介 Elasticsearch Head是集群管理、数据可视化、增删改查、查询语句可视化工具。 二、node.js的安装 ElasticSearch-head 依赖于node.js 下面先安装node.js 下面是node.js下载地址http://nodejs.cn/download/; 下载后,就是一个安装包&#xf…

如何在Ubuntu安装配置SVN服务端并实现无公网ip访问内网资料库

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” 文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改au…

Java可以用于物联网的开发吗?

Java可以用于物联网的开发吗? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「Java的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!J…

备忘录记事本内容转移到新手机的方法

在日常的工作和生活中,我习惯用备忘录来记录一切:工作的要点、买菜的清单、生活的琐事……这些看似微小的记录,却是我生活的重要组成部分。然而,每次换手机,我总是面临一个难题:如何将旧手机上的备忘录内容…

下沉市场哪些品牌正当红?“下沉同花顺”异军突起

文 | 螳螂观察 作者 | 易不二 2023年的消费市场,越来越多“农村包围城市”的下沉品牌,以亮眼的表现成为拉动消费复苏的主力军。 全球36000多家门店的蜜雪冰城,向港交所递表冲刺IPO;两大量贩零食巨头赵一鸣零食与零食很忙战略合…

一个响指,代码生成!华为云CodeArts Snap正式公测

月初,华为云CodeArts Snap正式开启公测,这是一款基于华为云研发大模型的智能化编程助手,旨在为开发者提供高效且智能的编程体验,提升研发人员的单兵作战能力。 如今,生成式AI爆发式增长,大模型商用节奏加快…

JVM/GC复习

JVM/GC JVM(java虚拟机)MATjstack(将正在运行的JVM的线程进行快照并且打印出来)死锁VisualVM工具(监控线程内存使用情况)JMX GC垃圾回收算法1.引用计数法2.标记清除发3.标记压缩算法4.复制算法5.分代算法 收集器1.串行垃圾收集器2.并行垃圾收集器2.CMS垃圾收集器 3.G1垃圾收集器…