后缀平衡树学习笔记

来源:互联网 发布:w7怎么连接网络 编辑:程序博客网 时间:2024/05/21 21:34

给定一个空串S
操作1 代表在S前加入一个字母使之成为新S
操作2 代表在询问在当前S中有多少连续子串等于给定串T

假设我们已经有了串S的后缀平衡树
插入一个字母c
我们用Si 代表原串S从第i个字符开始的后缀
则后缀 cS与 任意一个后缀 Si的大小关系可以用
c与Si 的第一个字母的大小关系
以及 后缀S1与后缀Si+1的大小关系来表示
前面是两个字符的比较 O(1)
后面两个原串后缀的大小关系由后缀平衡树所代表其的节点标号快速得出两个后缀大小 O(1)

在询问串后加上INFINF询问当前Rank
可以延伸与当前节点代表后缀的LCP的长度
然后利用Hash判断是否与当前节点的LCP是否大于等于当前延伸长度
后缀出现次数 RankSINFRankSINF

我居然贴了一个错的代码。。

0 0
原创粉丝点击