RMQ与LCA算法总结

转自:http://apps.hi.baidu.com/share/detail/33202817


下面放出总结的表:


算法

处理方式

复杂度

备注

转化算法

LCA =>±1RMQ

N/A

O(n)

引理1,规模O(n) – O(2n-1)

RMQ => LCA-CT

N/A

O(n)

引理2,规模不变

朴素算法

LCA-Naive

online

O(n^2)-O(1)

动态规划

RMQ-Naive

online

O(n^2)-O(1)

直接求解

经典算法

LCA-Tarjan

offline

O(na(n))

RMQ-ST

online

O(nlogn)-O(1)

改进算法

RMQ-ST-Block

online

O(nloglogn)-O(1)

RMQ-ST分段处理

±1RMQ-ST-Block

online

O(n)-O(1)

控制RMQ-ST-Block中分段的段种数,得到O(n)算法。

快速算法

RMQ-Fast

online

O(n)-O(1)

RMQ => LCA-CT => ±1RMQ

折衷算法

RMQ-IT

online

O(n)-O(logn)

线段树直接处理

RMQ-CT-Tarjan

offline

O(na(n))

RMQ => LCA-CT

再用LCA-Tarjan解决。


我们可以将一般RMQ的值得应用的算法列表:

算法

处理方式

复杂度

备注

RMQ-IT

online

O(n)-O(logn)

询问不多时,竞赛首选。

RMQ-CT-Tarjan

offline

O(na(n))

由于是离线的,而且还要转化成CT,某些地方不应用。

RMQ-ST

online

O(nlogn)-O(1)

询问多时,竞赛首选。

RMQ-ST-Block

online

O(nloglogn)-O(1)

时间要求特别严格时采用。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值