Two strings的另一种解法

Posted owencodeisking

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Two strings的另一种解法相关的知识,希望对你有一定的参考价值。

技术图片

论文中的解法是离线插入 (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)

技术图片

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

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

以上是关于Two strings的另一种解法的主要内容,如果未能解决你的问题,请参考以下文章

学习KMP算法时想到的另一种好方法

Java读取Excel的另一种方法

JAVA注释的另一种神奇用法

Two Strings Are Anagrams

使用 PostgreSQL 13 上的另一列使用 string_agg 订购 DISTINCT?

如何将一种泛型类型的结构复制到 TypeScript 中的另一种泛型?