Gym101237C The Palindrome Extraction Manacher

题意

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

上一篇:D. Constant Palindrome Sum(分情况讨论+差分)


下一篇:Codeforces Round #636div3 D. Constant Palindrome Sum