题目来源:http://poj.org/problem?id=2406主要考察KMP算法中next数组的性质,根据next[len]可以知道前len-1字符串最长前缀和后缀的循环长度那么len-next[len]即为一个循环单位的长度,倘若循环单位len-next[len]不是len的整数倍,则an...
分类:
其他好文 时间:
2014-07-29 17:07:22
阅读次数:
168
题目:Write a function to find the longest common prefix string amongst an array of strings.题解:解题思路是,先对整个String数组预处理一下,求一个最小长度(最长前缀肯定不能大于最小长度)。然后以第0个字符串....
分类:
编程语言 时间:
2014-07-28 11:33:30
阅读次数:
241
后缀自动机(sam)上的字符串匹配
====
我们把相对较短的模式串构造成sam。
对于P="abcabcacab", T[1..i]的后缀,使得它是sam的最长前缀长度:
T: b a b c b a b c a b c a a b c a b c a b c a c a b c
1 1 2 3 1 1 2 3 4 5 6 7 1 2 3 4 5 6 7 5 6 7 8 9 1...
分类:
其他好文 时间:
2014-07-09 09:38:32
阅读次数:
162
题目大意:
刚才上88个键弹出来的音符。
如果出现重复的,或者是高一个音阶的重复的都算。
思路分析:
具体可以参考训练指南222.
height数组表示按照排序后的sa最近的两个后缀的最长前缀。
将height 分块。然后二分答案,二分答案之后去判断是否满足。
要考虑到不重合,还有大于5。
所以二分的时候要从5开始,然后判断的时候要加一个 up - down >le...
分类:
其他好文 时间:
2014-06-30 19:27:18
阅读次数:
242
【题目描述】在生物学中,一些生物的结构是用包含其要素的大写字母序列来表示的。生物学家对于把长的序列分解成较短的序列(即元素)很感兴趣。如果一个集合 P 中的元素可以通过串联(元素可以重复使用,相当于 Pascal 中的 “+” 运算符)组成一个序列 S ,那么我们认为序列 S 可以分解为 P 中的元...
分类:
其他好文 时间:
2014-06-28 14:49:56
阅读次数:
468
其实做起来会感觉很简单,需要注意的是要考虑效率的问题,毕竟可能是很长的字符串数组,所以可以考虑选取所有字符串中最短的那个来首先进行比较,因为最长公共子串肯定不会大于其长度,这样避免了字符串之间长度差异很大造成的效率损失,然后每次比较之后最长公共子串的长度也永远不会大于最短的那个字符串,只会不变或相等,只要遍历字符串数组,挨个对比、更改最短公共字符串记录即可,code如下:...
分类:
其他好文 时间:
2014-06-11 06:58:55
阅读次数:
226