Количество простых чисел
- π(1012) = ?
- f(N, d) --- количество чисел от 1 до N, у которых все делители ≥ d
- Ans = f(N, √N) + π(√N)
- f(N, d) = f(N, d - 1) - f(N / d, d)
- Отсечение 1: f(N, d) предподсчитано, если N ≤ 106
- Отсечение 2: f(N, d) = 0, если d > N
- Отсечение 3: f(N, 1) = N, f(N, k) можно узнать бинпоиском по массиву всех таких чисел для малых k.
- Оценка времени работы:
Алгоритмы сжатия
- LZSS за O(N2)
- LZSS за O(NlogN)
- LZW за O(N)
Нестандартное дерево с перебаллансировкой
- BST. Док-во того, что логарифм.
- Одномерное дерево отрезков с вставкой в середину
- 2D дерево отрезков с добавлением точки
Потоки
- Теория. Введение.
- Алгоритм: max Flow, min Cut
- Связь с паросочетанием в двудольном графе: max Matching, min Cover
- Быстрый алгоритм поиска: Scaling* за O(E2)
Задачи на потоки.
- Удаление графа
- Восстановление матрицы по суммам в сторках и столбцах
- Покрытие грида с дырками доминошками
- Покраска регулярного графа (случай k = 2s, случай произвольного k = Д.З)
- Замощение грида минимальным числом палок 1xN