题意
给定字符串\(S\),分段\(S=A+B+C+D+E\),\(A,B,C,D,E\)可以为空串。要求方案\(B+D\)为回文串,且\(|B+D|\)最大
做法
假设\(|B|>|D|\),则\(B=rev(D)+T\),\(T\)为某回文串
跑manacher,对于一组\([l,i,r]\),就是找\(S_{1,l-1}\)的一组最长后缀使得其在\(S_{r+1,n}\)作为子串出现
具体做法就是对于\(rev(S)\)就SAM,然后\(S\)的每个前缀在上面定位,对于\([l,i,r]\),令\(pre_{l-1}\)为在后缀树上的定位,然后一直往上爬直到走到原来的\(S_{r+1,n}\)内部
题外话
好久没写SAM了,复习一下,看懂了多一点原理