后缀数组
kkkGIGi_qtt
蒟蒻蒟蒻蒟蒻
展开
-
[后缀数组]poj3261 Milk Patterns
题目:poj3261 Milk Patterns算法分析 这题的做法和上一题(poj1763)差不多,也是先二分答案,然后将后缀分成若干组。不同的是,这里要判断的是:有没有一个组的后缀个数不小于k。如果有,那么存在k个相同的子串满足条件,否则不存在。这个做法的时间复杂度为O(nlogn)。#include<cstdio>#include<cstdlib>#include<cstring>原创 2017-01-13 16:55:56 · 228 阅读 · 0 评论 -
[后缀数组]spoj694 Distinct Substrings/spoj705 New Distinct Substrings
今天接着讲后缀数组哈spoj694 spoj705一句话题意: 给定一个字符串,求不相同的子串的个数。算法分析: 每个子串一定是某个后缀的前缀,那么原问题就能转换成求所有后缀之间的不相同的前缀的个数。这样就可以用我们的后缀数组了 如果所有的后缀按照 suffix(sa[1]),suffix(sa[2]),suffix(sa[3]),……,suffix(sa[n]) 的顺序计原创 2017-01-14 11:43:16 · 233 阅读 · 0 评论 -
[后缀数组]poj2774 Long Long Message
poj2774 Long Long Message一句话题意:给定两个字符串A和B,求最长公共子串。算法分析: 字符串的任何一个子串都是这个字符串的某个后缀的前缀。求A和B的最长公共子串等价于求A的后缀和B的后缀的最长公共前缀的最大值。如果枚举A和B的所有的后缀,那么这样做显然效率低下。由于要计算A的后缀和B的后缀的最长公共前缀,所以先将第二个字符串写在第一个字符串后面,中间用一个没有出现过的字原创 2017-01-14 13:22:29 · 170 阅读 · 0 评论 -
[后缀数组]poj1743 Musical Theme
poj1743——Musical Theme一句话题意就是:给定一个字符串,求最长重复子串,这两个子串不能重叠。首先因为N太大了(1<=N<=20000),所以我们可以考虑用后缀数组算法分析: 先二分答案,把题目变成判定性问题:1、判断是否存在两个长度为k的子串是相同的;2、不重叠。先将后缀进行进行基数排序,把排序后的后缀分成若干组,其中每组的后缀之原创 2017-01-13 16:45:02 · 247 阅读 · 0 评论 -
后缀数组 (caioj)总结(?)
对后缀数组的一个总结吧 caioj1180[视频]后缀数组【模板】后缀排序caioj1467后缀数组1:不可重叠最长重复子串caioj1468后缀数组2:可重叠的k次最长重复子串caioj1469后缀数组3:连续重复子串caioj1470后缀数组4:Life Forms原创 2017-09-29 14:00:46 · 395 阅读 · 0 评论