Какая идея решения этой задачи ( https://old.informatics.msk.ru/mod/statements/view3.php?chapterid=112916# )? Пытался что-то придумать с хранением отсортированных циклических сдвигов (в итоге можно сравнивать только первые сдвиги для префикса и суффикса) и каждый раз, добавляя новый элемент к префиксу и суффиксу, пересортировывать эти сдвиги, но не знаю, возможно ли это сделать оптимально по времени.
Пусть наша строка имеет префикс и суффикс, являющиеся циклическим сдвигом. Пусть префикс — это строка $$$\alpha\beta$$$, а суффикс — это строка $$$\beta\alpha$$$ ($$$\alpha$$$ и $$$\beta$$$ — это какие-то строки, такое представление существует по определению циклического сдвига). Далее длина $$$\alpha$$$ равна $$$n$$$, длина $$$\beta$$$ — $$$m$$$ Тогда наша строка имеет вид
t = [ α ][ β ] . . . [ β ][ α ]
. Сделаем следующую замену исходной строки: создадим новую строку $$$s$$$, в которой на чётных индексах разместим символы первой половины строки $$$t$$$, а на нечётных — развёрнутой половины. Так, например, строка $$$\mathbf{ababbab}babbaab$$$ превартится в строку $$$\mathbf{a}b\mathbf{b}a\mathbf{a}a\mathbf{b}b\mathbf{b}b\mathbf{a}a\mathbf{b}b$$$. Посмотрим теперь, как будет выглядеть начало полученной строки в терминах строк $$$\alpha$$$ и $$$\beta$$$: $$$s = \mathbf{\alpha_0}\alpha_{n-1}\mathbf{\alpha_1}\alpha_{n-2}\dots\alpha_{n-1}\alpha_0 \mathbf{\beta_0}\beta_{m-1}\dots\mathbf{\beta_{m-1}}\beta_0\dots$$$. Нетрудно видеть, что строка $$$s$$$ начинается с двух палиндромов чётной длины.Теперь задача свелась к тому, чтобы найти два палиндрома максимальной суммарной длины, на которые начинается строка $$$s$$$. Это можно сделать, если зафиксировать длину первого палиндрома и среди всех палиндромов чётной длины, находящихся правее, искать подходящий максимальной длины (тут можно использовать алгоритм Манакера)
Вау, а все не так сложно оказалось. Благодарю за помощь!