--- Всем привет! Давно не было разборов, за что я дико извиняюсь. Но сегодня я хочу сделать разбор на недавний контест Div4. Сразу скажу, что для каждой задачи вы сможете просмотреть код для полной ясности идеи. Так что если то-то непонятно, то смело смотрите код. Удачи)
Идея: Если n чётное — все x уничтожатся парами, останется 0. Если n нечётное — один x останется, значит ответ равен x.
Примеры:
n = 4, x = 5→ все уничтожились →0.n = 5, x = 7→ остался один →7.
Идея: Двигаясь по одной оси, мы неизбежно проходим и через вторую. То есть соберём все лазеры — n по оси X и m по оси Y.
Ответ: n + m.
Пример:
n = 3, m = 2→ всего5.
Идея: Введём sign(x) — сторону зала перед минутой x.
Знаки разные (0 1 или 1 0): Пусть
x = 2, y = 5, sign = 1 0. Возможная комбинация:2^0, 3^1, 4^0. Если увеличитьy, комбинация не меняется. Вывод: разница(y-x)должна быть нечётной, иначе уменьшаем её на 1.Знаки одинаковые (0 0 или 1 1): Пусть
x = 2, y = 3, sign = 1 1. Возможная комбинация:2^0, 3^1. Если увеличитьy, получится:2^0, 3^1, 4^0, 5^1. Здесь наоборот: если(y-x)нечётное, уменьшаем на 1.
Также:
- Добавляем
(0,0)в начало, так как начинаем с минуты 0. - Последняя минута может быть меньше
k, поэтому добавляем ещё(k-last).
Идея: Газонокосилка меняет состояние только на нечётных элементах.
- Начинаем с суммы массива.
- Считаем количество нечётных элементов =
length. - Влияет только половина —
length/2.
- Почему? Первое нечётное меняет состояние, второе возвращает, третье снова меняет… Каждая пара компенсируется.
- Чтобы уменьшение суммы было минимальным, убираем
length/2наименьших нечётных.
Пример:
a = [3, 5, 2, 4, 7], сумма = 21.- Нечётные =
[3, 5, 7], нужно убрать1минимальный →3. - Ответ = 18.
Идея: Определим «потрясающий» отрезок: в нём все элементы встречаются кратно k.
Метод: скользящее окно.
- Двигаем правую границу, учитывая количество каждого числа.
- Если условие нарушено — двигаем левую границу.
- Когда окно «потрясающее», добавляем
(r - l + 1)в ответ.
Пример:
a = [1, 2, 1, 2], k = 2.- Окно
[1,2]→ частоты1,1, не делятся. - Окно
[1,2,1,2]→ частоты2,2, подходят → ответ увеличивается.
Идея: Нужно симулировать:
- Берём лексикографически минимальный массив.
- Удаляем все массивы длины ≤ его длины.
- У остальных обрезаем первые элементы.
Почему работает:
- Сумма длин ≤
2 * 10^5. - В худшем случае массивы длиной
1, 2, 3, …, x. - Тогда
x ≈ 632. Симуляция успевает.
Идея: Функция g(x) = последний индекс, где gcd уменьшился.
- Рассмотрим делители чисел.
- Пусть
cnt[d]= количество чисел, делящихся наd.
- Если
cnt[d] ≥ i→ gcd массива =d, не подходит. - Если
cnt[d] < i→ можно обновить максимум.
Пример:
a = [6, 10, 15].gcd(6,10) = 2,gcd(6,10,15) = 1.- Значит,
g(2) = 2.



