当前位置: 首页 > news >正文

线段树理论

假设我们此时线段树维护的信息集合为 \(D\),标记集合为 \(T\),而对于一颗线段树,我们需要维护的操作无非就是:

  • 区间合并:把两个相邻区间 \([l_1,r_1],[l_2,r_2]\) 的序列信息合并起来作为大区间 \([l_1,r_2]\) 的序列的信息。
  • 懒标记下传:把当前区间的懒标记作用到它的两个子区间上,而这又分为两个过程,即当前区间懒标记对子区间懒标记的作用,以及当前区间懒标记对子区间序列信息的作用。即懒标记之间的复合和懒标记对序列信息的复合。

那么信息集合 \(D\) 和标记集合 \(T\) 就需要满足以下的条件:

  • 存在运算 \(+:D \times D \to D\),其中 \(\times\) 是笛卡尔积,下面同理。
  • 由于标记需要作用到信息上,所以合并完之后依然是信息,那么就存在运算 \(\text{apply}:T \times D \to D\)
  • 标记需要复合才能保证复杂度,所以标记复合之后依然为标记,所以存在运算 \(\cdot:T\times T \to T\)
  • 当节点上没有标记时,事实上存储了一个代表「什么都不做」的空标记,那么就要求 \((T,\cdot)\) 这个群存在单位元。

除了这些限制,我们可以通过模拟线段树的过程来观察到其他的性质:

  • 我们在查询的时候一般会将区间 \([l,r]\) 的询问拆成 \([l,m]\)\([m+1,r]\) 这两个区间然后再合并,其中 \(m = \lfloor \frac{r+l}{2} \rfloor\)。这就说明了 \(D\)\(+\) 满足结合律,且合并完之后依然为信息。因此 \(D\) 需要是一个半群。
  • 子区间序列信息复合懒标记以后再合并和子区间序列信息合并后再复合懒标记相等,即 \(t(d_1 + d_2) = t\cdot d_1 + t\cdot d_2\),那么 \(\cdot\)\(+\) 有分配律。

而我们发现 \((D,+)\)\((T,\cdot)\) 都满足幺半群的条件,即满足封闭性,结合律和有单位元这三个条件。而这样子的线段树也被称之为双半群线段树。

http://www.hskmm.com/?act=detail&tid=39574

相关文章:

  • 最短路学习笔记
  • 语文_阅读_The power of curiosity in science_待读
  • 大学课堂“走神危机”,认真听讲能否破局?
  • 无符号整型左移33位
  • 以专注之姿,赴求知之约
  • 跨被动为主动:认真听讲,坚持实践
  • 认真听讲,是大学最好的修行
  • 《程序员修炼之道:从小工到专家》阅读笔记3
  • 20232328 2025-2026-1《网络与系统攻防技术》实验三实验报告
  • 英语_阅读_Meeting
  • 我的一个oier朋友
  • 磁盘格式化和LVM挂载
  • 2232
  • 123133
  • 1123
  • 研零学习笔记
  • 《程序员修炼之道:从小工到专家》阅读笔记2
  • 2025.10.24——1黄
  • 2025.10.26——1绿
  • 一期0. AI认知课/pytorch框架
  • 20251026 之所思 - 人生如梦
  • 关于耐心,专注力及主动性
  • APT36组织利用Linux BOSS恶意软件通过.desktop文件攻击印度政府
  • Sqlite EF CodeFirst For WPF
  • day02 pytorch介绍与安装
  • 拼多多一面
  • 大模型强化学习的熵控制:CE-GPPO、EPO与AsyPPO技术方案对比详解
  • 就是 CCPC2025 重庆站游记
  • 10.20-10.25 总结
  • Verilog学习-从FPGA的角度看Uart模块