• 蒟蒻的xianduanshu学习笔记(对没错我就是不想让大家看到hh)


    唔,从今天开始,每天整理两个知识点吧。

    首先是今天的主角——线段树!在学习线段树之前,我已经学习过了优先队列并且学会了用堆来模拟数组,对于二叉树也有了一定的认识,正好今天来接触一下线段树。

    接着是安利:

    (HH学习线段树的心路历程)新手的话看看洛谷的模板题QAQ

    (由于模板什么的都已经看好了,那么HH就在这里说说自己的理解吧)

    线段树在我看来,是对一段连续的区间操作的工具。基本操作有:

    1.建树:事实上是一个回溯的过程,就是先从上往下先建立好节点,但是不赋值,在递归回来的时候再赋值。(因为线段树储存的本身就是一段区间的和)

    2.查询:这里的查询就是一个二分查找,注意这里跟赋值的时候刚好反过来,是从上往下找的(只是思维是这个样子

    3.同时加:这里的加法可以用lazytag,就是在根节点上记录一个要改变的值,然后从上往下传递下去,真正加的时候就要算上区间长度;

    4.乘法:和加法类似,注意这里要先乘后加(根据四则运算的法则),同时也要多一步的计算量。

    唔,总之,学会了线段树,感觉又多了一个有力的武器,奇怪的信心增加了?(大雾)

  • 相关阅读:
    type( ) 和 isinstance( )
    el-input-number element计数器设置自定义小数位数
    Electron-Vue起步
    SmartGit破解使用的个人方法
    js 之 数组去重
    Vue动态class
    vue项目如何(友好的)刷新当前页
    Promise()与链式执行
    Vue过渡&循环切换&放大缩小动画
    css Margin塌陷问题(margin属性撑不开盒子)
  • 原文地址:https://www.cnblogs.com/hhlys/p/12597165.html
Copyright © 2020-2023  润新知