专栏文章
【科技】如何对ST表进行卡常
休闲·娱乐参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @min3rno8
- 此快照首次捕获于
- 2025/12/01 20:05 3 个月前
- 此快照最后确认于
- 2025/12/01 20:05 3 个月前
正常情况下,ST 表是 预处理并且 查询的。这基于其对两个 的区间的合并。
考虑我们先不采用 ST 表求解 RMQ,而是采用一个比较小众的方法:笛卡尔树+LCA。这样的话问题就变成了如何求 LCA。众所周知,一种非常快速的求 LCA 的方法是欧拉序+RMQ,这样由于欧拉序的长度是原序列的两倍,我们成功将 ST 表的复杂度的常数翻倍。
同时,注意到这种卡常方法具有优秀的可扩展性。因为新问题仍然是一个 RMQ 问题,我们可以考虑再使用笛卡尔树解决,这样新的序列长度继续翻倍。
不难导出以下公式:当嵌套 层笛卡尔树的时候,查询的复杂度变为 。其中,,因此复杂度为 。当 时, 不难发现 可以被视作常数,因此我们成功压掉了原来的复杂度瓶颈 ,可以将复杂度变为 。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...