Серия блога
Летняя подготовка: разогрев
- #1
Тренировочная сессия 1: разбор случаев на строке и сортировка при развороте гравитации
Первая тренировочная сессия летнего цикла: линейный проход по строке для поиска семи подряд идущих символов и сортировка массива вместо пошаговой симуляции падения кубов. Уровень CF ~900. Рабочий код на Python и C++, проверка на всех примерах условия, разбор крайних случаев и две задачи для самостоятельной тренировки.
- #2
Тренировочная сессия 2: целочисленная арифметика без ошибок округления
Как считать деление с округлением вверх без float и погрешностей и почему сумма координат по осям заменяет проверку вектора силы целиком. Тренировочная сессия 2: разбор двух задач уровня Codeforces ~1000, рабочий код на Python и C++, проверка на всех примерах условия, крайние случаи и типичные ошибки округления.
- #3
Тренировочная сессия 3: первая жадность и сортировка по остаткам
Первое знакомство с жадностью и её доказательством через exchange argument: сортировка драконов по силе и подсчёт групп по размеру — распределение по остаткам вместимости такси. Уровень CF ~1000–1100. Псевдокод, рабочий код на Python и C++, проверка на всех примерах условия, крайние случаи, типичные ошибки и две задачи для самостоятельной тренировки.
- #4
Тренировочная сессия 4: сортировка, бинарный поиск и суффиксные массивы
Бинарный поиск по отсортированному массиву отвечает на запрос «сколько элементов ≤ X» за O(log n), а проход справа налево с булевым массивом «встречалось ли значение» — на запрос «сколько различных чисел в суффиксе» за O(1) после предвычисления. Сессия 4: разбор двух задач CF ~1100, псевдокод, код на Python и C++, проверка на примерах, крайние случаи и типичные ошибки.
- #5
Тренировочная сессия 5: бинарный поиск по ответу и монотонный предикат — первое знакомство
Как понять, что задачу можно решать бинарным поиском по ответу: ищем предикат «выполнимо ли для x», доказываем его монотонность и находим границу за O(log). Разбираем две задачи уровня Codeforces ~1100 — про наполнение аквариума водой и про сборку двух команд — с рабочим кодом на Python и C++, проверкой на всех примерах условия и разбором типичных ошибок.
- #6
Тренировочная сессия 6: прямая формула и префиксные суммы на отсортированном массиве
Формула количества чисел, не делящихся на n, за O(1) вместо перебора, и приём с двумя префиксными суммами — по массиву и по его отсортированной копии — для мгновенных ответов на запросы диапазонов. Уровень CF ~1200. Код на Python и C++, проверка на примерах, крайние случаи и переполнения.
- #7
Тренировочная сессия 7: бинарный поиск по массиву и решето Эратосфена
Как превратить произвольный массив в служебный отсортированный (префиксный максимум) и искать ответ бинарным поиском — на задаче про лестницу с независимыми запросами. Плюс решето Эратосфена: почему T-простое число — это ровно квадрат простого, и как проверять это за O(1) после предвычисления. Код на Python и C++, проверка на всех примерах, крайние случаи и самостоятельная тренировка.
- #8
Тренировочная сессия 8: сортировка с бинарным поиском и хэш-таблица — мост к плато
Дан отсортированный массив — считаем элементы не больше порога бинарным поиском за O(log n). Дана база имён — генерируем уникальные логины хэш-таблицей за O(1) на запрос. Разбор двух задач CF ~1300: идея, псевдокод, код на Python и C++, проверка на всех примерах, крайние случаи и типичные ошибки.