← Вернуться в блог

Серия блога

Летняя подготовка: разогрев

8 статей

  1. #1

    Тренировочная сессия 1: разбор случаев на строке и сортировка при развороте гравитации

    Первая тренировочная сессия летнего цикла: линейный проход по строке для поиска семи подряд идущих символов и сортировка массива вместо пошаговой симуляции падения кубов. Уровень CF ~900. Рабочий код на Python и C++, проверка на всех примерах условия, разбор крайних случаев и две задачи для самостоятельной тренировки.

  2. #2

    Тренировочная сессия 2: целочисленная арифметика без ошибок округления

    Как считать деление с округлением вверх без float и погрешностей и почему сумма координат по осям заменяет проверку вектора силы целиком. Тренировочная сессия 2: разбор двух задач уровня Codeforces ~1000, рабочий код на Python и C++, проверка на всех примерах условия, крайние случаи и типичные ошибки округления.

  3. #3

    Тренировочная сессия 3: первая жадность и сортировка по остаткам

    Первое знакомство с жадностью и её доказательством через exchange argument: сортировка драконов по силе и подсчёт групп по размеру — распределение по остаткам вместимости такси. Уровень CF ~1000–1100. Псевдокод, рабочий код на Python и C++, проверка на всех примерах условия, крайние случаи, типичные ошибки и две задачи для самостоятельной тренировки.

  4. #4

    Тренировочная сессия 4: сортировка, бинарный поиск и суффиксные массивы

    Бинарный поиск по отсортированному массиву отвечает на запрос «сколько элементов ≤ X» за O(log n), а проход справа налево с булевым массивом «встречалось ли значение» — на запрос «сколько различных чисел в суффиксе» за O(1) после предвычисления. Сессия 4: разбор двух задач CF ~1100, псевдокод, код на Python и C++, проверка на примерах, крайние случаи и типичные ошибки.

  5. #5

    Тренировочная сессия 5: бинарный поиск по ответу и монотонный предикат — первое знакомство

    Как понять, что задачу можно решать бинарным поиском по ответу: ищем предикат «выполнимо ли для x», доказываем его монотонность и находим границу за O(log). Разбираем две задачи уровня Codeforces ~1100 — про наполнение аквариума водой и про сборку двух команд — с рабочим кодом на Python и C++, проверкой на всех примерах условия и разбором типичных ошибок.

  6. #6

    Тренировочная сессия 6: прямая формула и префиксные суммы на отсортированном массиве

    Формула количества чисел, не делящихся на n, за O(1) вместо перебора, и приём с двумя префиксными суммами — по массиву и по его отсортированной копии — для мгновенных ответов на запросы диапазонов. Уровень CF ~1200. Код на Python и C++, проверка на примерах, крайние случаи и переполнения.

  7. #7

    Тренировочная сессия 7: бинарный поиск по массиву и решето Эратосфена

    Как превратить произвольный массив в служебный отсортированный (префиксный максимум) и искать ответ бинарным поиском — на задаче про лестницу с независимыми запросами. Плюс решето Эратосфена: почему T-простое число — это ровно квадрат простого, и как проверять это за O(1) после предвычисления. Код на Python и C++, проверка на всех примерах, крайние случаи и самостоятельная тренировка.

  8. #8

    Тренировочная сессия 8: сортировка с бинарным поиском и хэш-таблица — мост к плато

    Дан отсортированный массив — считаем элементы не больше порога бинарным поиском за O(log n). Дана база имён — генерируем уникальные логины хэш-таблицей за O(1) на запрос. Разбор двух задач CF ~1300: идея, псевдокод, код на Python и C++, проверка на всех примерах, крайние случаи и типичные ошибки.