Блог пользователя Gerald

Автор Gerald, 16 лет назад, По-русски
На одной из прошлых тренировок ИТМО я наткнулся на одну интересную задачу. В ней давалась строка и делались следующие запросы, перевернуть отрезок с L по R, найти LCP двух суффиксов i, j, длина строки 106, да и запросов тоже 105. На контесте тогда я не успел добраться до нее, заступорился на более простых задачах, а в дорешивании не смог придумать как решать. Подозрительное слово переворот так и напрашивает декартово дерево из хешей, но как его поддерживать не очень понятно =)


В общем, Хотелось бы узнать как решается эта замечательная задача =). Жду комментариев!=)
  • Проголосовать: нравится
  • +4
  • Проголосовать: не нравится

16 лет назад, скрыть # |
 
Проголосовать: нравится +3 Проголосовать: не нравится
Насколько я помню эта задача была на командной в ЛКШ. И если это так, то декартово дерево хешей - авторское решение.

А поддерживается оно несложно. Храним 2 хеша на поддереве - прямой и перевернутый. Тогда Для разворота просто меняем хеши местами. А для пересчета хешей через поддеревья, поддерживаем количество вершин в поддереве, которое и так нужно.