Строки, базовые алгоритмы (10 марта 2016)
- LCP за O(n2)
- Задачи на хеши
- Общая идея #1: любые две строки можно сравнить на равенство за O(1)
- Общая идея #2: любые две строки можно сравнить на больше/меньше за O(logn) бинпоиском
- Суф.массив за O(nlog2n)
- Z-функция за O(nlogn) хешами
- Найти все периоды строки хешами
- Количество различных подстрок за [O(n2), O(n)]
- Самая длинная общая подстрока, содержащая не более K пробелов за [O(nlogn), O(n)]
- Найти максимальную по длине строку, которая входит строку S два раза без наложения [O(nlogn), O(n)]
- Задачи на префикс-функцию и Z-функцию, LCP
- Найти наибольшую общую подстроку за O(n2) (3 решения: префикс, Z, LCP)
- Найти подстроку в тексте с возможностью одной опечатки за O(n) (z-функция с начала, z-функция с конца)
- Найти все периоды строки Z-функцией
- Найти все периоды строки Prefix-функцией
- [не успеем] Лемма: если +i, +j, то +gcd(i,j)
- [не успеем] Для каждого префикса строки S проверить его периодичность
- [не успеем] Найти в тексте s слово a, за ним слово b так, чтобы расстояние между вхождениями было минимально
- [не успеем] Найти номер строки в её суффиксном массиве
- [не успеем] Ещё задачи на хеши
- [не успеем] Количество подпалиндромов строки за O(nlogn)
- [не успеем] Самый длинный подпалиндром за O(n)