码农知识堂 - 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] 的和,我们发现它是从中间值平分开的,这里

  • 相关阅读:
    ES6 入门教程 23 Class 的继承 23.1 简介
    linux 文件管理
    quarkus数据库篇之三:单应用同时操作多个数据库
    Ajax系列之文件上传图片即时预览
    【ITRA】2022年ITRA赛事注册流程 从0-1
    C++(14):std::exchange
    软考高级系统架构论文 注意事项
    iwemeta元宇宙:宇宙网红,马斯克年度“吹牛大会”!10年卖1亿辆车,“擎天柱”机器人年底量产
    天宇优配|钠电池汽车要来了,续航达500公里!持续高成长股揭秘
    day7【代码随想录】移除链表元素
  • 原文地址:https://blog.csdn.net/2301_77550592/article/details/133436295
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号