【线段树】学习笔记

线段树,顾名思义就是用来存储线段的结构。利用这个,我们可以将一个线段(区间)上的统计问题在log2n时间内解决

这里以n为2的幂的情况做讨论

线段树的层数最多为log2n层:线段树的叶子节点表示的是一个『点』,那么n,每次除以二,显然在第log2n层会变成叶子节点,所以层数只会有log2n层

每个线段可以被分为2log2L条:考虑查询的连续性,如果你在某一层取得两个结点,它们肯定是不相邻的,显然我们取不到同一层的第三个结点,所以每个线段可以被分为2log2L条

Lazy-tag技术:应对区间修改的最好方法? 如果对于一个一个点修改,显然是太慢了,那么我们对于要修改的区间,把他拆分成log条,然后给每条对应的结点打上一个Lazy-tag:"这个区间被统一加上了多少"。当我们在某种情况下访问到了一个还有Lazy-tag的结点,把它的Lazy-tag分享给左右孩子,清零,这样保证了时间复杂度不退化

2016.3.6

时间: 2024-10-14 03:11:43

【线段树】学习笔记的相关文章

线段树学习笔记

线段树学习笔记 20180112 http://www.cnblogs.com/wuyuanyuan/p/8277100.html 一定要明确需要维护的值(区间最大值.区间和--). 原文地址:https://www.cnblogs.com/wuyuanyuan/p/8278004.html

线段树学习

此题题意很好懂:  给你N个数,Q个操作,操作有两种,‘Q a b ’是询问a~b这段数的和,‘C a b c’是把a~b这段数都加上c. 需要用到线段树的,update:成段增减,query:区间求和 介绍Lazy思想:lazy-tag思想,记录每一个线段树节点的变化值,当这部分线段的一致性被破坏我们就将这个变化值传递给子区间,大大增加了线段树的效率. 在此通俗的解释我理解的Lazy意思,比如现在需要对[a,b]区间值进行加c操作,那么就从根节点[1,n]开始调用update函数进行操作,如果

线段树学习(一)

看到UESTC的数据结构专题快要结束了,感觉自己真心浪费了好多时间,没有像鑫航学姐那样叮嘱的一样,紧紧的跟住训练. 所以下决心认认真真的开始学习下线段树的知识,以前对于线段树的学习都是一知半解的,就是说,我只知道线段树是用来单点更新和区间查值的,其实,线段树的功能远远不止这些. 先来说下,线段树是用来求解有关区间问题的绝逼法宝,为什么说绝逼呢.因为它能够在logn的时间内完成每次的查询. 查询的分类: 1.区间查询 -访问某段区间的某些性质(比如说,最大值,最小值,连续和,等等) 2.区间更新

支配树学习笔记

支配树(dominator tree) 学习笔记 学习背景 本来本蒟蒻都不知道有一个东西叫支配树……pkuwc前查某位的水表看见它的大名,甚感恐慌啊.不过好在pkuwc5道题(嗯?)都是概率期望计数,也不知是好还是不好,我在这些方面也只是不好不差……扯远了. 考挂之后也没什么心思干别的,想起支配树这个东西,于是打算学一下. 技能介绍(雾) 支配树是什么?不如直接讲支配树的性质,从性质分析它的定义. 先大概讲一下它是来求什么的. 问题:我们有一个有向图(可以有环),定下了一个节点为起点s.现在我们

哈夫曼树学习笔记

既然我们要学习赫夫曼树,那么我们首先就要知道什么叫赫夫曼树. 那么什么叫赫夫曼树呢? 一.什么叫赫夫曼树? 书上说:“赫夫曼(Huffman)树又称最优树,是一类带权路径长度最短的树,但是我们仅学习最优二叉树.” 看到这个还是不明白什么意思,因此在学习之前我们要结合这个图了解几个基本概念. 路    径:由一结点到另一结点间的分支所构成.如:a->b a->b->e 路径长度:路径上的分支数目,如:a→e的路径长度=2  a->c的路径长度=1 树的路径长度:从树根到每一结点的路径

Splay伸展树学习笔记

Splay伸展树 有篇Splay入门必看文章 —— CSDN链接 经典引文 空间效率:O(n) 时间效率:O(log n)插入.查找.删除 创造者:Daniel Sleator 和 Robert Tarjan 优点:每次查询会调整树的结构,使被查询频率高的条目更靠近树根. Tree Rotation 树的旋转是splay的基础,对于二叉查找树来说,树的旋转不破坏查找树的结构. Splaying Splaying是Splay Tree中的基本操作,为了让被查询的条目更接近树根,Splay Tree

CART分类与回归树 学习笔记

CART:Classification and regression tree,分类与回归树.(是二叉树) CART是决策树的一种,主要由特征选择,树的生成和剪枝三部分组成.它主要用来处理分类和回归问题,下面对分别对其进行介绍. 1.回归树:使用平方误差最小准则 训练集为:D={(x1,y1), (x2,y2), …, (xn,yn)}. 输出Y为连续变量,将输入划分为M个区域,分别为R1,R2,…,RM,每个区域的输出值分别为:c1,c2,…,cm则回归树模型可表示为: 则平方误差为: 假如使

C# 表达式树学习笔记

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1

AVL树 - 学习笔记

2017-08-29 14:35:55 writer:pprp AVL树就是带有平衡条件的二叉查找树.每个节点的左子树和右子树高度相差最多为1的二叉查找树 空树的高度定为-1 对树的修正称为旋转 对内部的来说是双旋,对外部的调整修正是单旋 ---------------------------------------------------------------------------------------------------------------- 由于一次旋转总能解决问题,因此编写

左偏树 学习笔记

左偏树(Leftist Tree)是一种可并堆的实现.左偏树是一棵二叉树,它的节点除了和二叉树的节点一样具有左右子树指针( left, right)外,还有两个属性,键值和距离(dist). 键值:是用于比较节点的大小. 距离:节点i称为外节点(external node),当且仅当节点i的左子树或右子树为空 ( left(i) = NULL或right(i) = NULL ):节点i称为外节点(external node),当且仅当节点i的左子树或右子树为空 ( left(i) = NULL或