SPOJ1811 && SPOJ1812

SPOJ1811 && SPOJ1812

LCS && LCS2

非常神奇的两道题。。。

题目大意:

给定n个字符串,求最长公共子串

 

做法1:

后缀数组:

把字符串连起来建成一个长串

二分长度 --> 最长的长度即可

二分判断条件,有一组height分组中出现了所有子串的某一后缀

 

做法2:

后缀树:

把字符串连起来建成一个长串

建出后缀树

只有有一个点的子树中出现了所有的子串的某一后缀

它的深度就可能成为长度

当然,要带上map

自然,现在是无法维护的。

注意到建树的时候的特点,可以选择在建树的时候来维护。

 

做法3:

后缀自动机:

把第一个串建成后缀自动机

后面的串在上面匹配取min即可

 

所以。。。。

后缀系列的东西都差不多。。。。。

posted @ 2018-05-07 00:21  remoon  阅读(162)  评论(0编辑  收藏  举报