随笔分类 - 字符串——后缀数组
1
摘要:咕咕
阅读全文
摘要:为什么要写这个呢...
因为毒瘤出题人模拟赛搬原题→_→
阅读全文
摘要:无摘要..
阅读全文
摘要:没有摘要。
阅读全文
摘要:
阅读全文

摘要:
阅读全文
.jpg)
摘要:"题目链接" SAM: 能成为识别子串的只有那些|right|=1的节点代表的串。 设这个节点对应原串的右端点为r[i],则如果|right[i]|=1,即这些子串都出现一次。 那么对于[ r[i] len[
阅读全文
摘要:"题目链接" 环可以拆成链;对字符串排序能想到后缀数组。 完了。输出时忽略长度不足n的串,输出s[sa[i]+n 1],即排名为i的字符串的末尾。
阅读全文
摘要:"题目链接" "后缀自动机做法见这(超好写啊)" 。 后缀数组是可以做的: 本质不同的字符串的个数为 ,即 . 如果是每次往后边插入字符,会改变SA[]。但如果向前边插入字符,相当于只加入了一个后缀。
阅读全文
摘要:"题目链接" 给定SA数组,求满足SA[]的一个原字符串(每个字符为小写字母),无解输出 1. 假设我们现在有suf(SA[j]),要构造suf(SA[i]) (要满足i j) 考虑后缀的比较方式,先比较第一位,再比较suf(SA[i]+1)与suf
阅读全文
摘要:给定两个字符串,求它们有多少个相同子串。相同串的位置不同算多个。
阅读全文
摘要:"题目链接" 求两个字符串长度不小于k的公共子串对数。 求出ht[]后先减去k,这样对于两个后缀A',B',它们之间的贡献为min{ht(A)}(A'到B'ht[]的最小值)。 维护一个栈,栈中ht从底到顶递减。 如果当前是求B中后缀i和前边A中子串
阅读全文
摘要:"题目链接 POJ2774" "SPOJ1811 LCS Longest Common Substring" 比 "后缀自动机" 慢好多(废话→_→)。 求两个字符串最长公共子串 任何一个子串一定是某个后缀的前缀 可以将两个字符串拼在一起,中间用一个
阅读全文
摘要:"题目链接" 给定一段数字序列(Ai∈[1,88]),求最长的两个子序列满足: 1.长度至少为5 2.一个子序列可以通过全部加或减同一个数来变成另一个子序列 3.两个子序列没有重叠部分 求不重叠最长重复子序列: SA: 首先二分k,判断是否存在长度为
阅读全文
摘要:"题目链接" 论找到一个好的教程的正确性。。 "后缀数组" 下标从1编号: cpp //299ms 2560kb include include include const int N=1e5+5; int n,sa[N],rk[N],sa2[N],tm[N],ht[N]; char s[N]; v
阅读全文
摘要:"题目链接" cpp //输出ht见UOJ.35 include include include const int N=1e6+5; int n,tm[N],t1[N],t2[N],SA[N],rk[N],ht[N]; //SA[i]=j:排名为i的后缀开头的下标为j //rk[i]=j:以下标i
阅读全文
1