Задача A
Полное решение: Чтобы выбрать k = 4, нужна последовательность: [x, x, x, x] `` Дляk = 5`:
[x, x, x, x, x]
Для k = 6:
[x, x, x, x, x, x]
То есть нам нужна непрерывная последовательность длиной k с элементом x.
Формула для элемента:
x = n - k + 1
Алгоритм:
- Начинаем с
k = 1, постепенно увеличиваем. - Для каждого
n - i + 1ищем максимальную непрерывную последовательность. - Проверяем:
- если длина равна
k(i), то уменьшаем всеa[i] == n - i + 1на 1 и идём дальше; - если условие нарушается, то ответ отрицательный;
- иначе ответ положительный.
Выводим результат.
Задача B
Полное решение: Лучше всего брать минимальные купоны, чтобы бесплатно доставались самые дорогие товары.
Пример:
a = [18, 3, 7, 2, 9]
b = [3, 2, 1]
- Купон
3→ берём 18, 9 и бесплатно 7. - Купон
2→ берём 18 и бесплатно 9. - Купон
1→ берём 0 и бесплатно 18.
Решение:
- Отсортировать массивы
aиb. - Для каждого купона
x:
- прибавить
(x−1)максимальных элементов; - сдвинуть индекс
l += x.
- Следить, чтобы не выйти за границы.
- Если остались товары, их придётся купить.
Выводим сумму.
Задача C
Полное решение: У нас есть x, y и вершины u, v.
Если
p[u] > p[v] → ребро весит x
иначе → ребро весит y
Построение:
- Если
x ≥ y, то строим реброv → u. - Иначе строим
u → v.
Получаем ациклический граф (DAG).
Алгоритм:
- Выполнить топологическую сортировку (например, алгоритм Кана).
- Присвоить вершинам значения от
1доnв порядке топосортировки. - Заполнить массив:
res[x] = u
Выводим перестановку.
Хочешь, я ещё добавлю подсветку блоков формул (например, рамки вокруг res[x] = u и x = n - k + 1), чтобы выглядело как в конспекте по матанализу?



