后缀自动机XJ
后缀自动机初探(xiajiang)
后缀树\((Suffix Tree)\)
对于一个字符串,把它的所有后缀插入到\(Trie\)中就是一个后缀树。
当然字母存在边上,最终的点可以用一个特殊符号如:\(\&\)来表示这个后缀结束了。
考虑对树压缩路径,也就是把原字符串一个个后缀存到点上。
这样的话节点数就达到了\(O(N)\)级别。
然后就是啪啪的建树......这个过程不多做讲述......
我们现在假设你会建树,会dp,那么:
给定一个长度为\(n\)的字符串\(S\),记\(suf[i]\)表示从$ i $开始的后缀。
求:\(\sum_{1<=i<j<=n}len[suf[i]] + len[suf[j]] - 2 * lcp(suf[i],suf[j])\)
前面的话可以\(O(1)\)的算出来,关键是后面怎么算?(2*lcp(suf[i],suf[j])
两个节点的最长公共前缀就是LCA的后缀,然后处理出有多少个后缀包含当前节点字符串的前缀,树上背包就可以了。
其实后缀树就是可以使你维护字符串变得方便又高效。
后缀自动机\((Suffix Auto Maton)\)
前言:其实\(SAM\)好建,好做,不好想...
官定:
对给定字符串\(S\)的后缀自动机是一个最小化确定有限状态自动机,它能够接收字符串\(S\)所有后缀。
而且从初始状态0可以到达所有状态。
一个或多个状态被标记为终止状态。如果我们从初始状态0经由任意路径走到某一终止状态,并顺序写出所有经过边的标记,得到的字符串必然是\(s\)的某一后缀。
并且\(SAM\)维护以上顶点数最少。
留坑
后缀自动机XJ的更多相关文章
- BZOJ 后缀自动机四·重复旋律7
后缀自动机四·重复旋律7 时间限制:15000ms 单点时限:3000ms 内存限制:512MB 描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一段音乐旋律可以被表示为一段数构成的数列. 神奇的 ...
- 【Codeforces235C】Cyclical Quest 后缀自动机
C. Cyclical Quest time limit per test:3 seconds memory limit per test:512 megabytes input:standard i ...
- 【hihocoder#1413】Rikka with String 后缀自动机 + 差分
搞了一上午+接近一下午这个题,然后被屠了个稀烂,默默仰慕一晚上学会SAM的以及半天4道SAM的hxy大爷. 题目链接:http://hihocoder.com/problemset/problem/1 ...
- 【BZOJ-3998】弦论 后缀自动机
3998: [TJOI2015]弦论 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 2018 Solved: 662[Submit][Status] ...
- HDU 4622 Reincarnation (查询一段字符串的不同子串个数,后缀自动机)
Reincarnation Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)To ...
- hihoCoder 后缀自动机三·重复旋律6
后缀自动机三·重复旋律6 时间限制:15000ms 单点时限:3000ms 内存限制:512MB 描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一个音乐旋律被表示为一段数构成的数列. 现在小Hi ...
- hihoCoder #1445 : 后缀自动机二·重复旋律5
#1445 : 后缀自动机二·重复旋律5 时间限制:10000ms 单点时限:2000ms 内存限制:256MB 描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一个音乐旋律被表示为一段数构成的数 ...
- 数据结构:后缀自动机 WJMZBMR讲稿的整理和注释
链接放在这里,有点难理解,至少我个人是的. 后缀自动机是一种有限状态自动机,其功能是识别字符串是否是母串的后缀.它能解决的问题当然不仅仅是判断是不是后缀这种事,跟字符串的连续子串有关的问题都可以往这个 ...
- 【SPOJ】7258. Lexicographical Substring Search(后缀自动机)
http://www.spoj.com/problems/SUBLEX/ 后缀自动机系列完成QAQ...撒花..明天or今晚写个小结? 首先得知道:后缀自动机中,root出发到任意一个状态的路径对应一 ...
随机推荐
- vSphere ESXi如何使用嵌套虚拟化(1-vSphere 6.0+linux虚拟化)
今天准备在vSphere当中上传一个用workstation做出来的虚拟机,没想到遇到了很多问题,在这里,作为新手小白碰到了一些问题,在这里总结一下. 1.workstation做出来的虚拟机直接上传 ...
- 笔记52 Mybatis快速入门(三)
一.更多查询 1.模糊查询 修改Category.xml,提供listCategoryByName查询语句select * from category where name like concat(' ...
- day02 mysql基本语句 存储引擎 数据类型 完整性约束
day02 mysql 一.sql的基本语句 系统数据库 information_schema: 虚拟库, 不占磁盘空间(在内存汇中): 存的是数据库启动后的一些参数, 如 ...
- 搜索进阶课件,视频,代码(状态压缩搜索,折半搜索,dfs,bfs总结)
链接:https://pan.baidu.com/s/1-svffrprCOO4CtQoCTQ9hQ 提取码:h909 复制这段内容后打开百度网盘手机App,操作更方便哦
- 每天进步一点点-WPF-根据数据类型加载控件
目的,根据数据类型的不同,动态的加载适用于不同数据类型的控件(布局) 原理:为自定义的数据类型添加数据魔板,绑定的时候绑定这些数据类型的实例. 例子: 数据类型: 数据模板: <DataTemp ...
- leetcood学习笔记-70-爬楼梯
题目描述: 第一次提交:(超时) class Solution: def climbStairs(self, n: int) -> int: if n == 0 or n == 1 or n = ...
- 在vue中使用Element的message组件
在vue中使用Element的message组件 在vue文件中使用 this.$message({ message: "提示信息", type: "success&qu ...
- @ControllerAdvice + @ExceptionHandler全局处理Controller层异常
import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind ...
- bs4修改html文件和保存
一.需求 将2个html文件保存到本地浏览器,例如: A页面(我的博客主页) B页面(爬虫四大金刚) 然后将A页面中的爬虫链接,链接的a标签中的href属性修改成本地B页面的地址,实现在本地浏览A页面 ...
- Docker Api 实测
好久没写博客,工作中想着未来部门需要对docker进行维护相对麻烦,而且,网络上也缺少一些合适的项目,于是准备筹划自己动手.先找到了Docker 的API文档,地址是:https://docs.doc ...