[OI] 猫树

概述

猫树是一种与线段树类似的数据结构

线段树在解决不带修区间问题时,对于单次查询是 O(log) 的,此时运用猫树就可以将单次查询的复杂度降到 O(1)

合理运用分块的思想,在区间内分块,思考我们在块上查询的过程

设黑色的线段为整个区间,红色的线段为查询区间,黑色线段中间的凸起为中点

既然我们能在线段树上做,那么该问题一定具有区间可合并性

那么我们可以预处理出中点前的节点到中点的区间信息(后缀和)中点后的节点到中点的区间信息(前缀和),这样就可以快速求解跨中点的查询

比如,假设查询 [l,r] (l<mid<r),则有 [l,r]=[l,mid]+[mid,r],因此我们可以快速求出答案

然而到这里我们并没有办法求解不跨中点的查询,因此我们就需要结合线段树了

尝试对区间建立一颗线段树,然后在线段树每个节点上都建立这样一个前缀+后缀的组合,这样,在遇到不跨中点的查询的时候,直接转到下一层,直到这个查询变成跨中点的查询为止

猫树的好处是,最多只会进行一次合并操作,在合并复杂度较高的维护信息中可能会比较好用

例题(待完善)

[SPOJ GSS1] Can you answer these queries I

对若干询问区间求区间内最大子段和(maxi=lrai

[P6240] 好吃的题目

区间 01 背包

看到一个很抽象的公式

minϕi=1nEtU(0,1),ϵN(0,I),cp(c)[||ϵϕ(αtg(θ(i),c)+σtϵ,t,c,y)ϵ||22]

posted @   HaneDaniko  阅读(77)  评论(2编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示