首页 > 其他 > 详细

Two strings的另一种解法

时间:2019-02-18 14:29:53      阅读:142      评论:0      收藏:0      [点我收藏+]

技术分享图片

论文中的解法是离线插入 \(O(\log n)\) 询问 \(O(\log n)\) 的,不过我发现有一种离线插入 \(O(1)\) 询问 \(O(\log n)\) 的方法。

首先我们离线处理,将两个串连在一起。我们以 \(ababa\)\(aba\) 为例:

技术分享图片

比如现在我们要询问 \(A\)\([1,4]\)\(B\)\([1,2]\)

我们先在 \(rnk[7]\) 开始倍增,使得 \([l,r]\)\(height>=2\)

技术分享图片

然后我们在这个区间中找多少 \(1\leq sa[i]\leq 3\)。为什么是 \(3\) 呢?因为 \(3-4-len_b+1\)。显然答案为 \(2\)

询问就是主席树上区间加,询问是 \(O(\log n)\) 的,插入是 \(O(1)\) 的。

Two strings的另一种解法

原文:https://www.cnblogs.com/owencodeisking/p/10395258.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!