[OI] 猫树
1.[OI] 树上背包问题2.[OI] 图论3.[OI] 关于最小环和负权环4.[OI] 分层图最短路5.[OI] 关于Eratosthenes筛法的优化思路6.[OI] DP7.[OI] 线段树8.[OI] 扫描线9.[OI] KMP10.[OI] 二分图11.[OI] 平衡树12.[OI] pb_ds13.[OI] Kruskal 重构树14.[OI] 模拟退火15.[OI] 可持久化数据结构16.[OI] Testlib17.[OI] 交互 | pipe18.[OI] 二项式期望 DP19.[OI] 整体二分20.[OI] 结构体引用类型转换
21.[OI] 猫树
22.[OI] 树链剖分23.Borůvka 算法24.线段树分治25.C++ 编译静态链接 (-static)概述
猫树是一种与线段树类似的数据结构
线段树在解决不带修区间问题时,对于单次查询是
合理运用分块的思想,在区间内分块,思考我们在块上查询的过程
设黑色的线段为整个区间,红色的线段为查询区间,黑色线段中间的凸起为中点
既然我们能在线段树上做,那么该问题一定具有区间可合并性
那么我们可以预处理出中点前的节点到中点的区间信息(后缀和)和中点后的节点到中点的区间信息(前缀和),这样就可以快速求解跨中点的查询
比如,假设查询
然而到这里我们并没有办法求解不跨中点的查询,因此我们就需要结合线段树了
尝试对区间建立一颗线段树,然后在线段树每个节点上都建立这样一个前缀+后缀的组合,这样,在遇到不跨中点的查询的时候,直接转到下一层,直到这个查询变成跨中点的查询为止
猫树的好处是,最多只会进行一次合并操作,在合并复杂度较高的维护信息中可能会比较好用
例题(待完善)
[SPOJ GSS1] Can you answer these queries I
对若干询问区间求区间内最大子段和(
)
[P6240] 好吃的题目
区间 01 背包
看到一个很抽象的公式
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!