tyboj 有趣回文串
分析
不妨设\(L[i]\)表示以\(i\)为开头所有右端点的和,\(R[i]\)表示以\(i\)为结尾的所有左端点的和
只需求出\(L,R\)即可
\(L[i]\)的求法和\(R[i]\)相同
所以只需要考虑\(L[i]\)的求法
先处理字符串
设\(R[i]\)为最大半径
\[L[i]=\sum_{i\leq j,j-R[j]+1\leq i} \frac{j+j-i}{2}
\]
当\(i\)倒序枚举时,\(j-R[j]+1\leq i\)只会打破一次,拆开式子,所以用Vector维护
只需要管\(i\in odd\)的\(L[i]\),时间复杂度\(O(n)\)

Manacher
浙公网安备 33010602011771号