
后缀自动机
_奶酪
这个作者很懒,什么都没留下…
展开
-
【洛谷P3804】统计每个子串出现的次数和长度(后缀自动机模版+拓扑序计数)
题目地址:https://www.luogu.org/problem/P3804解题思路:对于此题求拓扑序的两种方法:(1)桶排序法:最终y[x]=i, 表示在拓扑序中第x个点是i void _count() { memset(x,0,sizeof(x)); for(int i=1;i<=cnt;i++) x[len[i]]++...原创 2019-10-06 12:00:56 · 708 阅读 · 0 评论 -
【SPOJ - NSUBSTR】Substring(统计长度为x的子串最多出现的次数--后缀自动机)
题目地址:https://cn.vjudge.net/problem/SPOJ-NSUBSTR解题思路:建立SAM,先统计每个状态的最长子串出现的次数(应该是这个意思吧,这个状态substring中的每个子串也都出现了相同的次数),每个状态st的substring中的子串长度区间为[maxlen[link[st]]+1,maxlen[st]]。对于状态st1,substring(st1...原创 2019-10-06 15:49:04 · 590 阅读 · 0 评论 -
【SPOJ-SUBLEX】Lexicographical Substring Search(字典序第k小的子串(不重复统计同一个子串)---后缀自动机)
题目地址:https://cn.vjudge.net/problem/SPOJ-SUBLEX解题思路:这道题用后缀数组也很好做,参见例题HDU5008,此处用SAM做。建好SAM,根据得到的拓扑序,可以推得从每个状态出发的子串数目。void getsum()//从某个状态点出发能有多少个子串{ //倒推,i是拓扑序的序号 for(int i = num; i &...原创 2019-10-06 17:32:20 · 861 阅读 · 0 评论