随笔分类 -  字符串-后缀数组

 
POJ3261-Milk Patterns(后缀数组)
摘要:题意:给定一个整数序列,求这个整数序列中至少重复出现K次的子串的最大长度。 分析:我们求出lcp[]数组:相邻后缀的最长公共前缀,我们二分长度,然后判断是否存在一段连续的一组的长度>=二分的长度,并且至少存在k次。 #include <iostream> #include <cstdio> #inc 阅读全文
posted @ 2020-07-24 16:38 TT3E 阅读(108) 评论(0) 推荐(0)
POJ-1743 Musial Theme(后缀数组 + 二分)(男人八题)
摘要:题意:有N(1 ⇐ N ⇐ 20000)个音符的序列来表示一首乐曲,每个音符都是1...88范围内的整数,现在要找一个重复的子串,它需要满足如下条件:1.长度至少为5个音符。2.在乐曲中重复出现(就是出现过至少两次)。(可能经过转调,"转调"的意思是主题序列中每个音符都被加上或者减去了同一个整数值) 阅读全文
posted @ 2020-07-22 12:17 TT3E 阅读(128) 评论(0) 推荐(0)
POJ-2217 最长公共子串
摘要:题意:给定两个字符串S和T。请计算两个字符串最长的公共字符串子串的长度。 分析:考虑问题的简化版,计算一个字符串中至少出现两次的最长子串。答案一定会在后缀数组中相邻两个后缀的公共前缀之中,所以只要考虑它们就好了。我们可以合并两个字符串,利用一个字符隔开,然后通过求高度数组,然后把问题求解出来。 #i 阅读全文
posted @ 2020-07-21 10:12 TT3E 阅读(94) 评论(0) 推荐(0)
POJ-3581 Sequence(后缀数组)
摘要:题意:给定N个数字组成的序列$A_1, A_2, ..., A_n$。其中$A_1$比其它数字都大。现在要把这个序列分成三段,并将每段分别反转,求得到的字典序最小的序列是什么?要求分得的每段都不为空。 分析:首先确定第一段的分割位置。这很好说,由于$A_1$比其它数字都大,确定第一段的分割位置只需要 阅读全文
posted @ 2020-07-18 17:16 TT3E 阅读(141) 评论(0) 推荐(0)