zoukankan      html  css  js  c++  java
  • 蒟蒻的xianduanshu学习笔记(对没错我就是不想让大家看到hh)

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

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

    接着是安利:

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

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

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

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

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

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

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

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

  • 相关阅读:
    oracle添加字段,备注
    oracle对日期date类型操作的函数
    查询效率例子收藏
    webuploader.min.js 简单例子
    select 数字/字符串/count(参数)/sum(数字) from table
    oracle常用分析函数 over(partition by xxx order by xxx)
    LigerUi遮罩的两个方法
    LigerUI子父窗口之间传参问题
    LigerUi自动检索输入
    LigerUi折叠与展开
  • 原文地址:https://www.cnblogs.com/hhlys/p/12597165.html
Copyright © 2011-2022 走看看