随笔分类 - ACM——后缀数组
摘要:题意:求出现恰好 k次的子串(可以重叠)的个数; 分析: 刚开始想到了是后缀数组,但是有什么性质,具体怎么做的没有想到。回到主题来: 连续 k 次,说明这 k 个后缀排序后在一起,每次枚举 长度的为 k 的区间,用RMQ算出最长公共前缀长度,这里就有 len 个子串是 符合满足 k 次的,但是又有可
阅读全文
摘要:一个论文题,求一个字符串有多少个不同的子串。 每个字符串可以看做一个后缀的前缀,然后,就转换为求每一个后缀中,不同的子串有多少。 每一个后缀,根据长度,可以提供len - sa[i] 个子串,但是,画图可以看出,有一些是重复的,height[i]。
阅读全文
摘要:后缀数组裸题,求排名第1~n的后缀,想相邻后缀的最长公共前缀。 集训队模板就是硬lO(∩_∩)O哈哈~
阅读全文
摘要:题意:一道论文题,给定一串数组,求最长的重复子串长度,其中这两个子串不重叠,这两个子串可以相差同一个数字。 分析:后一个减前一个数字,那么对于上面说的,可以相差同一个数字就变成了相同数字。问题就变成了,求一个串里面的最长不可重复的子串长度。 但是不再是height数组里面的最大值了,二分答案,将he
阅读全文
摘要:题意:求两个字符串的最长公共字串(10^5)。枚举字串去匹配是最傻的方法啊。 分析: 很久之前就对后缀数组有所耳闻,是利用基数排序将所有后缀按照字典序排序。 sa[i] 排名第 i 的是后缀 k。 rank[i] 与 sa 互补,rank[i] 后缀 i 排在第几。 height[i] : sa[i
阅读全文