码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 朝气蓬勃 后生可畏


    介绍:

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

    建树:

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

    1. typedef long long ll;
    2. #define ls (p << 1)
    3. #define rs (p << 1 | 1)
    4. #define mid ((l + r) >> 1)
    5. // 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] 的和,我们发现它是从中间值平分开的,这里

  • 相关阅读:
    【信号识别】基于matlab深度学习CNN信号调制分类【含Matlab源码 2066期】
    「学习笔记」随机数据
    国产智多晶FPGA基于Verilog的设计开发流程
    同步 -- 自旋锁
    【问题解决】源码安装Nginx提示找不到openssl library
    论文解读(SentiX)《SentiX: A Sentiment-Aware Pre-Trained Model for Cross-Domain Sentiment Analysis》
    docker系列文章目录
    一文讲解Linux Scheduler之rt选核流程
    能否通过手机号查询他人位置及技术实现(省流:不能)
    8种结构型设计模式对比
  • 原文地址:https://blog.csdn.net/2301_77550592/article/details/133436295
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号