首页 > 其他分享 >数据结构小记

数据结构小记

时间:2023-07-17 13:22:29浏览次数:38  
标签:线段 查询 ADD 区间 mathcal 数据结构 operatorname 小记

线段树

区间查询

线段树可以维护具有结合律的信息。

区间修改 区间查询

加上修改后应当满足的前提是

  1. 我们可以维护一个封闭的集合 \(\mathcal{S}\),使得任一操作 \(o\in\mathcal{S}\),且 \(\mathcal{S}\) 对于复合封闭,即对任意 \(u,v\in\mathcal{S}\),有 \(u\circ v\in\mathcal{S}\)。
  2. 对于任意一个区间 \(s\) 和一个操作 \(o\),我们需要足够快地求出 \(o\) 作用在 \(s\) 上后,\(s\) 区间的答案。

需要特别注意的一点 \(\mathcal{S}\) 必须对任意复合严格的封闭,不能存在任何的特例,因为在线段树的 pushdown 过程中任意的 \(u,v\in\mathcal{S}\) 都可能需要被进行复合操作。上述的条件是充分且必要的。

例如区间加区间求和,对于任意两个区间加操作 \(\operatorname{ADD}(u),\operatorname{ADD}(v)\),它们的复合我们可以表示为 \(\operatorname{ADD}(u+v)\),满足条件 1;
对于一个 \(\operatorname{ADD}(u)\) 作用在区间 \(s\) 后,\(\operatorname{ANS}(s')=\operatorname{ANS}(s)+|s|u\),可以快速求出,满足条件 2。

例题

区间修改 单点查询

区间修改区间查询的约束 2 过于强,对于比较复杂的题很多时候简单分析就可以否决 Polylog 的可能,直接排除了使用线段树维护。

但是对于单点查询,满足约束 1 即可,很多时候复杂的修改也能用线段树维护。因此对于区间修改单点查询的题目,无论多么复杂,应当先尝试线段树。

例题

可持久化

能用上一般都看得出来,很多时候作为一道题的一部分,下面会贴一些比较有意思的应用。

[TODO]

分块

标签:线段,查询,ADD,区间,mathcal,数据结构,operatorname,小记
From: https://www.cnblogs.com/watware-cym/p/17559830.html

相关文章

  • 二. 基础数据结构
    二.基础数据结构0.引JSON是一个有着特殊结构的数据,为了解析JSON,需要使用编程语言将JSON的数据格式进行抽象,有助于更好地,快捷地实现JSON数据的解析.为了使解析JSON结构的性能更好,选用C语言实现JSON的数据结构的抽象,以及底层的结构的解析功能实现.1.JSON基础数......
  • 数据结构练习笔记——创建有序单链表
    创建有序单链表【问题描述】为从键盘终端输入的m个整数创建带头结点的有序单链表存储结构,使输入的数据元素在单链表中按照元素值递增有序。【输入形式】第一行:单链表中元素个数m第二行:单链表中的m个整数【输出形式】按递增有序形式输出m个整数【样例输入】513245【......
  • C语言:数据结构之单链表(四)
    本篇谈一谈单链表的改,具体操作就是找到他,然后修改元素即可,上一篇有相关代码,可以参考。改函数代码如下:voidCorrect(LinkListheader,intsite_,charletter_){LinkListq=Search_Site(header,site_);q->letter=letter_;}main函数如下:(修改第6,......
  • 数据结构之顺序表
    顺序表顺序表的定义     线性表是具有相同数据类型的n(n>=0)个数据元素的有限序列   顺序表---用顺序存储的方式实现线性表。顺序存储---把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。   如何知道一个......
  • 数据结构 查找 红黑树查找
    1.红黑树的定义红黑树可以看作是对平衡二叉树的进一步改进。平衡二叉树的一个缺点在于插入和删除操作中为了维持平衡会消耗很大的执行代价,降低效率。红黑树的结构是在平衡二叉树的平衡标准上稍微放宽得到的。红黑树的定义:......
  • 数据结构练习笔记——输出单链表倒数第k个元素
    输出单链表倒数第k个元素【问题描述】已知带头结点的非空单链表中存放着若干整数,请找出该链表中倒数第k个元素。【输入形式】第一行:单链表中元素个数m,第二行:单链表中的m个整数,第三行:k值【输出形式】倒数第k个元素的值(不存在倒数第k个元素输出"no")【样例1】输入:5132450......
  • 数据结构 查找 树形查找
    1.二叉排序树二叉排序树可以提高查找、插入和删除的效率。(1)二叉排序树(BST)的定义定义比较简单,左子树所有结点<根节点<右子树所有结点同时左右子树也分别都是二叉排序树特点:对二叉排序树进行中序遍历,可以得到一个递增有序序列。(2)二叉排序树的插入BST的插入是为了其构造而使......
  • 数据结构(第八章)
    数据结构(第八章)排序一、插入排序1.1、直接插入排序直接插入排序的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。代码展示:#defineMaxSize100//定义一个顺序表结构typedefstruct{intdata[MaxSize+1];//定义一个排序数......
  • 数据结构之线性表
    线性表的定义和操作线性表的定义    线性表是具有相同数据类型的n(n>=0)个数据元素的有限序列,其中n为表长,当n=0时线性表是一个空表。若用L命名线性表,则其一般表示为L=(a1,a2,...ai,ai+1,...an)几个概念:   相同是指每个数据元素所占空间一样大。   ai是线......
  • 严蔚敏 数据结构 配套教材 PDF
    目录严蔚敏数据结构配套教材PDF下载地址:严蔚敏数据结构配套教材PDF配套教材包括:严蔚敏《数据结构题集》(C语言版).pdf严蔚敏《数据结构》(C语言版)配套题库【名校考研真题+章节题库+模拟试题】严蔚敏《数据结构》(C语言版)笔记和习题(含考研真题)详解严蔚敏《数据结构》(C语言版......