回文树 学习小记
来源:互联网 发布:如何恢复u盘数据 编辑:程序博客网 时间:2024/06/06 03:25
Text
由于实在太简单,我尽可能简略
回文树的每个节点代表了原串的回文子串
维护两个树,一个是偶长度,一个是奇长度
每个点维护len、fail、出边
len就是代表回文串的长度
fail就是这个串的最长回文后缀的位置
假设当前字符串为Sx,走的这个边是字符c的
那么走到的字符串就是cSxc
考虑增量法构造
在末尾加入一个子符,那么从last开始沿着fail找到第一个可以两边加这个字符的位置,它新开一个这个字符的儿子(有就不用了)
再从他开始沿着fail找,找到第二个可以两边加这个字符的位置,那么新开的这个点的fail连向找到的第二个点的这个字符的儿子(有就不用了)
那么为什么只用找到第一个和第二个呢
因为第一个以后的一定都是第一个的回文后缀,根据回文的定义,既然有这样一个回文后缀,那么一定有一个跟他一样的回文前缀,所以它一定在前面已经出现过,不必继续做下去
总空间复杂度O(N*字符集大小),时间复杂度O(N*字符集大小*log)
此处不给证明
模板嘛,Emmm…
阅读全文
0 0
- 回文树学习小记
- 回文树 学习小记
- 回文树(回文自动机)学习小记
- 回文自动机学习小记
- 回文树(Palindrome Tree)/回文自动机(Palindrome Automaton)学习小记
- 回文树/回文自动机 Palindromic Tree 学习小记
- 回文树复习小记
- 平衡树学习小记
- 笛卡儿树学习小记
- 回文树学习小结
- 【伸展树splay学习小记】
- LCT动态树学习小记
- 最小割树 学习小记
- 学习小记
- 学习小记
- 学习小记
- 学习小记
- 【动态树之link_cut_tree学习小记】
- LDA主题模型三连击-入门/理论/代码
- django项目开发模拟auth的做一个登录验证(二)
- JAVA包装类及其拆箱装箱及Integer类拆装箱的细节
- 现代操作系统之多处理机系统(中)
- 策略模式
- 回文树 学习小记
- django-web开发使用图片验证码
- oracle时间函数
- 在springboot项目中配置跨域
- JavaScript学习-面向对象与原型1
- bzoj1834 [ZJOI2010]network 网络扩容(最大流+费用流)
- 线程与进程
- centos7安装wps
- 读书笔记——深入理解JAVA虚拟机(3)