朝气蓬勃 后生可畏

news2024/11/28 19:04:32

介绍:

线段树是一棵二叉搜索树,思想与分治很想,把一段区间平分平分再平分,平分到不能平分为止,可以进行方便的区间修改和区间查询,当然,树状数组能做的单点修改、单点查询,线段树也可以更好地实现,总之,线段树是树状数组的升级版,此外,线段树能做的平衡树也能做,但平衡树码量太大,考场上一般写不出来反正我是写不出来,就是会写也不会用,其次有些特殊的线段树如权值线段树也可以水过平衡树,可见,线段树的应用还是十分广泛的。
图片来自 OI-WikiOI-Wiki

建树:

一般的线段树都是递归建树,当然,也有一种不用递归建树的线段树,即非递归线段树——zkw 线段树
当然,zkw 线段树并不是我们现在的主角,我们讲一下递归建树的操作
首先,可以设置三个方便的宏定义偷懒

typedef long long ll;
#define ls (p << 1)
#define rs (p << 1 | 1)
#define mid ((l + r) >> 1)
// ls 左儿子 rs 右儿子 mid 中间值

因为线段树是棵二叉树,pp 是当前节点的编号,所以一个结点的左儿子和右儿子可以表示为p×2p×2 和 p×2+1p×2+1,用位运算速度更快,但是要注意运算符之间的优先级,不熟悉的那就勤加括号吧反正加几个括号基本没影响,还不容易出错,不加白不加,至于这个 midmid,纯粹是图省事
刚才我们也讲了左右儿子的表示方法,所以我们的空间要开到原来的四倍,当然,线段树还有一种结构体存法,那个存法开两倍空间即可,但要维护的东西不少,所以也没剩多少空间,而且操作起来很麻烦,不如用这种左右儿子表示法来存储

ll val[N << 2];

image

如图,这是一颗线段树,每一个节点都代表着一个区间的信息,如 11 号节点代表着区间 [1,5][1,5]的和,44 代表着区间 [1,2][1,2] 的和,我们发现它是从中间值平分开的,这里就是分治的思

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

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

相关文章

Acwing 839. 模拟堆

Acwing 839. 模拟堆 题目描述思路讲解代码展示 题目描述 思路讲解 代码展示 #include <iostream> #include <algorithm> #include <string.h>using namespace std;const int N 100010;int h[N], ph[N], hp[N], cnt;void heap_swap(int a, int b) {swap(ph[…

2021-06-17 51蛋骗鸡0-99自动加减

缘由怎么实现两位秒表自动加减_嵌入式-CSDN问答 #include "REG52.h" sbit K1 P1^5; sbit K2 P1^6; sbit K3 P1^7; sbit K4 P1^4; //sbit LED1P1^0; //sbit LED2P1^1; //sbit LED3P1^2; //sbit LED4P1^3; bit k0; unsigned char code SmZiFu[]{63,6,91,79,102,10…

CentOS安装OpenNebula(一)

OpenNebula是一个非常成熟的云平台&#xff0c;&#xff0c;十分简单&#xff0c;但是功能十分丰富。它提供了十分灵活的解决方案&#xff0c;让用户能建立并管理企业云和虚拟的数据中心。 OpenNebula是专门为云计算打造的开源系统&#xff0c;用户可以使用Xen、KVM、VMware等…

JAVA 异常分类及处理

1 概念 如果某个方法不能按照正常的途径完成任务&#xff0c;就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时&#xff0c;这个方法会立刻退出同时不返回任何值。另外&#xff0c;调用 这个方法的其他代码也无法继续执行&#xff0c;异常处理…

controller-manager学习三部曲之一:通过脚本文件寻找程序入口

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码)&#xff1a;https://github.com/zq2599/blog_demos 关于《controller-manager学习三部曲》 《controller-manager学习三部曲》是欣宸原创的kubernetes深入学习系列之一&#xff0c;在前面的《client-go实战》系…

Pikachu靶场——目录遍历漏洞和敏感信息泄露

文章目录 1. 目录遍历漏洞1.1 源码分析1.2 漏洞防御 2. 敏感信息泄露2.1 漏洞防御 1. 目录遍历漏洞 漏洞描述 目录遍历漏洞发生在应用程序未能正确限制用户输入的情况下。攻击者可以利用这个漏洞&#xff0c;通过在请求中使用特殊的文件路径字符&#xff08;如 …/ 或 %2e%2e…

Acwing 838. 堆排序

Acwing 838. 堆排序 题目描述思路讲解代码展示 题目描述 思路讲解 堆是一颗完全二叉树&#xff0c;除了最下面一层&#xff0c;其余是满的&#xff0c;最后一层从左到右排列 小根堆&#xff1a;每个点小于等于左右两堆&#xff0c;所以根节点就是最小值 大根堆&#xff1a;每个…

2021-06-18 51蛋骗鸡实现流水灯累积点亮全亮后闪烁从头开始循环

缘由怎么在单片机上实现这个功能呢_有问必答-CSDN问答 #include "REG52.h" sbit K1 P1^5; sbit K2 P1^6; sbit K3 P1^7; sbit K4 P1^4; //sbit LED1P1^0; //sbit LED2P1^1; //sbit LED3P1^2; //sbit LED4P1^3; bit k1; unsigned char code SmZiFu[]{63,6,91,79,…

【U8+】用友U8建立账套,提示准备模板文件出错。

【问题描述】 用友U8在新建账套的过程中&#xff0c; 初始化环境&#xff0c;提示准备模板文件出错&#xff0c; SQL Server 阻止了对组件xp_cmdshell的过程sys.xp cmdshell的访问&#xff0c;因为此组件已作为此服务器安全配置的一部分而被关闭。 【解决方法】 出现这种错误…

【中秋国庆不断更】HarmonyOS对通知类消息的管理与发布通知(下)

一、发布进度条类型通知 进度条通知也是常见的通知类型&#xff0c;主要应用于文件下载、事务处理进度显示。HarmonyOS提供了进度条模板&#xff0c;发布通知应用设置好进度条模板的属性值&#xff0c;如模板名、模板数据&#xff0c;通过通知子系统发送到通知栏显示。 目前系统…

Java基础---第十一篇

系列文章目录 文章目录 系列文章目录一、说说List,Set,Map三者的区别?二、Object 有哪些常用方法?大致说一下每个方法的含义三、Java 创建对象有几种方式?一、说说List,Set,Map三者的区别? List(对付顺序的好帮手): List接口存储一组不唯一(可以有多个元素引用相同的对象…

28272-2012 米制超细牙螺纹 系列和基本尺寸

声明 本文是学习GB-T 28272-2012 米制超细牙螺纹 系列和基本尺寸. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了米制超细牙螺纹的基本牙型、直径与螺距系列和基本尺寸。 本标准适用于精密仪器和电子设备等领域的螺纹连接。 2…

Linux软硬连接与动静态库

硬链接 我们可以通过命令 ln myproc myproc-h 创建硬链接。 很容易发现 test&#xff08;源文件&#xff09; 和 mytest &#xff08;硬链接&#xff09;的文件大小是一样的&#xff0c;mytest的硬链接数从 1-> 2 通过 ls -i 文件名 我们还会发现&#xff0c;test 和 myte…

10以内字符与数字的转化(与ASCII码无关)

字符转整型数字 char a3; int ba1; cout<<b; 这样打印出的结果是51&#xff1b;显然我们想打印出的结果是4&#xff1b; 那么下面介绍一种极其简单的方法&#xff1b; 1.利用“ -0 ” char a6; int ba-01; cout<<b; 输出结果就是7&#xff1b; 不过这种方…

Vue--Axios详解

一、Axios是什么&#xff1f; Axios是一种异步请求技术&#xff0c;核心作用就是用来给页面 发送异步请求的&#xff0c;并获取对应数据在页面中的渲染&#xff0c;是页面局部更新的Ajax封装来的。 特性 从浏览器创建 XMLHttpRequests从 node.js 创建 http 请求支持 Promise A…

【Vue3】兄弟组件传参

1. 借助父组件传参 A 组件派发一个事件&#xff0c;修改 flag 的值&#xff0c;先传递给父组件&#xff0c;然后由父组件传递给 B 组件。 缺点&#xff1a;必须由 App.vue 处理中间逻辑。 A.vue <template><div class"A"><h1>A组件</h1>…

Tomcat8 任意写文件PUT方法 (CVE-2017-12615)

Tomcat 任意写文件PUT方法 (CVE-2017-12615) 文章目录 Tomcat 任意写文件PUT方法 (CVE-2017-12615)1 在线漏洞解读:2 版本影响3 环境搭建4 漏洞复现4.1 访问4.2 POC攻击点4.2.1 直接发送以下数据包&#xff0c;然后shell将被写入Web根目录。4.2.2 访问是否通&#xff0c;可以访…

零基础Linux_10(进程)进程终止(main函数的返回值)+进程等待

目录 1. 进程终止 1.1 main函数的返回值 1.2 进程退出码和错误码 1.3 进程终止的常见方法 2. 进程等待 2.1 进程等待的原因 2.2 wait 函数 2.3 waitpid 函数 2.4 int* status参数 2.5 int options非阻塞等待 本篇完。 1. 进程终止 进程终止指的就是程序执行结束了&…

Linux命令之查看用户登录信息命令

一、命令简介 linux系统查看用户登录信息的命令有很多&#xff0c;包括w、who、whoami、users、last、lastb、lastlog、id、finger等。每个命令都可以查看当前登录的用户&#xff0c;但是又各有侧重点。w还可以查看用户正在执行的命令&#xff1b;who可以查看系统的启动时间&am…