题意
给定字符串(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了,复习一下,看懂了多一点原理