摘要:
求和式的前两项可以直接算,问题是对于每对i,j计算LCP。 一个比较显然的性质是,LCP(i,j)是h[rk[i]+1~rk[j]]中的最小值。 从h的每个元素角度考虑,就是对每个h计算有多少对i,j以它为最小值。 在h中使用单调栈统计左右比它小的第一个元素,相乘得到结果。 阅读全文
摘要:
差分之后就是求多串LCS。 对其中一个串建SAM,然后把其它串放在上面跑。 对SAM上的每个状态都用f[x]记录这个状态与当前串的最长匹配长度,res[x]是对每次的f[x]取最小值。答案就是res[]的最大值。 考虑f[x]的求法,把s[]放在SAM上跑时,若下一个能正常匹配(即son[x][c] 阅读全文