Строки: хеши и бор
- [Сережа.М] Декартово дерево
- Остатки
- [Ваня] Строки, строки, строки
- Хеши
- Сравнение на равенство за O(1)
- Сравнение на больше-меньше за O(logn)
- Выбор модуля. Реализация: как и в частичных суммах h[0] = 0
- Решение задач
- Хеш-таблица
- Открытая адресация (быстро, но только добавление)
- Списки
- Задачи
- LCP(i, j) за O(logn) хешами
- Наибольшая общая подстрока за O(nlogn)
- LCP(i, j) для всех i, j динамикой за O(n2)
- Бор
- Реализация через
next[N][26]
- Реализация через списки, хеш-таблицу
- Сжатый бор: ребро = подстрока исходной строки
- Суф.дерево, построение за O(n2) и O(n) памяти, число различных подстрок
- [Сережа.K] С/C++
vector<int>(n)
= {int *a, size_t n, size_t size}
- Один
vector<int>(n)
. Он быстрый как new int[n]
. Мятный как орбит-мята.
- Создадим 107 векторов, в каждый сделаем 4 раза push_back. Долго?
- reserve(4), resize(4)
- operator new, operator delete
- замеряем время освобождения памяти: оборачиваем массив векторов в объект