【后缀自动机】 SPOJ LCS2 Longest Common Substring II

通道:http://www.spoj.com/problems/LCS2/

题意:LCS的进阶,不过这个是问N(<10)串的LCS

思路:对A串建立SAM,然后每加入一个串就进行匹配,定义这些和上一题差不多,不过这里可能会超时,有个小优化dp[i][j]:前I个字符串的k位置时对应的A串的j节点的最大长度,转移dp[i][j] = max(dp[i][j], min(dp[i - 1][j], ans));然后从p节点向上跳将dp[i-1][j]>dp[i][j]的都更新掉即可。

代码:https://github.com/Mithril0rd/Rojo/blob/master/SPOJLCS2.cpp

TAG:LCS进阶

posted @ 2014-10-16 01:19  mithrilhan  阅读(154)  评论(0编辑  收藏  举报