好像已经很久没有做后缀数组的题目,导致这种题一开始没想出来看到公共子串肯定想到后缀数组吧,但我都忘了最长公共子串怎么求了重要的性质:最长公共子串=max(h[i])名次相邻的两个后缀要分别属于s1,s2串 具体怎么证很简单这道题多了一个条件,就是公用子串不能包含某个串——很明显想到KMP我们可以预处理与s3匹配的起始位置,然后处理每个点右边最近的起始位置然后在穷举h[i]的时候判断一下即可 ..] of longint; v:..] of boolean; j,t,st,en,ans,i,p,l…