区间取min线段树的一种奇妙势能分析

本文探讨了一种特殊的线段树——吉司机线段树,分析了其在处理区间操作时的时间复杂度,并讨论了势函数的概念及其在控制复杂度上的应用。文中提到,对于特定的操作类型,该线段树能达到O((n+m)logn)的时间复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写图片描述

比如这题
设势函数=每个点所管区间内互异值的个数总和
一开始势能最大nlogn
操作1使得势能最多增加logn
操作2我们这样处理:每个点记录一下最大值和次大值,若x大于最大值退掉,若x在最大值与次大值之间则打一个tag,若x小于次大值则递归下去。
可以发现,每次递归下去时势函数都至少减1,这时我们要花费向下走左右子树,共2的时间。

那么,总的时间复杂度就控制在了势函数最大值(n+m) log n上。
但是题解的分析是n log^2 n的,不知道这个奇妙的分析方法有没有问题。

2019 UPD

这种线段树叫吉司机线段树。
复杂度的确是O((n+m)logn)O((n + m) log n)O((n+m)logn)
假如有区间加操作,那么复杂度可以证明为O(nlog2n)O(n log^2 n)O(nlog2n)
但是实践上效率更接近于O(nlogn)O(n log n)O(nlogn),并没有能卡成log^2的数据(没准他本来就是一个log呢?)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值