题目链接:http://www.spoj.com/problems/LCS/ 题意如题目,求两个串的最大公共子串LCS. 首先对其中一个字符串A建立SAM,然后用另一个字符串B在上面跑. 用一个变量Lcs来记录当前答案,如果能转移到下一个状态则Lcs++. 若不能转移说明需要重新选择状态,则不断地跳到当前状态的fa状态,如果发现能够转移就停下来,Lcs变为当前状态的len+1并转移到下一个可行状态. 这里很像AC自动机的fail指针的跳跃.因为fa状态是当前状态的后缀,已经被匹配过,而fa状态有…