线段树学习笔记与总结
线段树
引入
我们经常会遇到需要维护一个序列的问题,例如给定一个整数序列,每次操作会修改序列某个位置上的数,或是海间你序列巾某个区问内所有数的和,用“暴力"算法,单点修改的复杂度为
资源链接
OI Wiki - 线段树
AcWing 1 - 单点修改、区间询问
AcWing 2 - 区间修改、区间询问
模板
用结构体 struct
储存线段树更为方便
struct Node
{
int l, r; // 区间
type xxx; // 需要的值
}
一般有五个操作函数
void pushup() // 由子节点更新父节点(更新所储存的值sum/max/min)
void pushdown() // 由父节点更新子节点(懒惰/延迟标记)
void build() // 构建
void modify() // 更改
type query() // 查询
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通