Что решает
сжатие
Статьи
SRT
Алгоритм
Экспоненциальный поиск
Шаги 1, 2, 4, 8, … пока не перескочишь, потом двоичный поиск: когда граница неизвестна или ответ близко.
2⌊log₂ i⌋ + 1 вопрос до позиции i
1 задача
DS
Структура данных
Бор (префиксное дерево)
Слова с общим началом идут общим путём: поиск слова и всех продолжений — за длину запроса.
O(L) на вставку и поиск слова длины L
2 задачи
DS
Структура данных
Дерево Фенвика
Суммы на префиксе с изменениями за O(log n) в одном массиве: блоки длиной в младшую единицу номера.
O(log n) на сумму префикса и на изменение
2 задачи
STR
Структура данных
Суффиксный массив
Отсортированные хвосты текста: поиск двоичным поиском, повторы и число разных кусков по соседям.
O(n log n)
2 задачи
STR
Алгоритм
Преобразование Барроуза — Уилера
Перестановка, которая сжимает текст и служит по нему указателем: обратный поиск, LF и выравнивание ридов.
O(m) на подсчёт образца, O(m + k·s) на k мест
2 задачи
STR
Алгоритм
Код Хаффмана
Оптимальный префиксный код по частотам знаков: два самых редких дерева склеиваются, пока не останется одно.
O(n log n)
2 задачи
STR
Алгоритм
LZ77 и LZW
Повторы — ссылками назад (LZ77) или номерами фраз растущего словаря (LZW); хеш-цепочки, уровни, окно.
O(n · chain)
2 задачи
GEO
Алгоритм
Упрощение линий Рамера — Дугласа — Пекера
Упростить ломаную без потери формы: точка, дальше всех от хорды, остаётся, если она дальше допуска.
O(n log n) в типичном случае, O(n²) в худшем
2 задачи
SYS
Структура данных
Инвертированный индекс и BM25
Словарь «слово → документы, где оно есть»: запрос читает несколько коротких списков вместо всех текстов.
O(сумма длин списков слов запроса); «И» галопом — O(m·log(n/m))
2 задачи
ML
Алгоритм
Метод главных компонент
Находит направления наибольшего разброса данных и описывает каждую точку немногими числами вдоль них.
O(n·d² + d³)
2 задачи
Задачи
Часто рядом
классика 7 поисковики 5 собеседования 5 в проде 4 поиск 3 двоичный поиск 3 поиск в тексте 3 дерево 2 частоты 2 олимпиады 2 суффиксные структуры 2 предподсчёт 2