$ Суффиксный массив vb = [Ваня] sk = [Сережа.K] sm = [Сережа.М] # $sk$ С/C++ ## Конструкторы и деструкторы ## Finalize через деструкторы ## public, private, struct, class, наследование ## свой модный вектор с unique! ## nth\_element: стандартный метод, реализация через qsort за O(n) # $sm$ Суффиксный зоопарк ## Суффиксный массив за O(nlog^2n) хешами ## Суффиксный массив за O(nlogn) ### Сортировка подсчетом ### Цифровая сортировка ### Суффиксы → циклические сдвиги ### Основная фаза: удвоение длины ## LCP ### Алгоритм Касаи для подсчета LCP за O(n) ### Проблемы в случае циклических сдвигов и периодичной строки ## Задачи на строки, решение деревом и массивом ## LCP любых двух за O(1): RMQ в массиве, LCA в дереве ### Поиск строки в тексте (строим структуру от текста, отвечаем на запрос-строку) ### Число различных подстрок ### Общая подстрока двух строк ### Общая подстрока k строк !### Число подпалиндромов !### Число общих подпалиндромов !### k-я лексикографически общая подстрока !### Найти самую длинную строку, которая встречается как подстрока хотя бы k раз