Ctrl K

Нарезка с штрафом за повторы

Сложная
Дан массив целых чисел values и число fee. Массив нужно разрезать на несколько непустых кусков, идущих подряд (каждый элемент попадает ровно в один кусок, порядок не меняется). Каждый кусок стоит fee плюс штраф за повторы: число его элементов, значение которых встречается в этом же куске хотя бы дважды. Элементы, чьё значение в куске единственное, ничего не добавляют. Например, у куска [5, 1, 5, 5, 2] штраф 3 (три пятёрки), и он стоит fee + 3. Верните минимальную суммарную стоимость нарезки.
Пример 1
values=[4, 0, 4, 1, 1, 0], fee=3 → 8

Лучше всего разрезать на [4, 0, 4, 1] и [1, 0]: первый кусок стоит 3 + 2 (две четвёрки), второй — 3, итого 8. Один кусок целиком стоил бы 3 + 6 = 9.

Пример 2
values=[2, 2, 2, 2], fee=1 → 4

Четыре группы по одному элементу: в каждой повторов нет, итого 4 · 1 = 4.

Пример 3
values=[0, 1, 2], fee=7 → 7
Ограничения
  • 1 ≤ len(values) ≤ 1000
  • 0 ≤ values[i] < len(values)
  • 1 ≤ fee ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиЗаклинания без соседей СредняяВсе способы расставить пробелы СложнаяОтрезки ровно с k видами СложнаяЦепочки с квадратными суммами СложнаяСамый частый цвет на пути Сложная
загружаем Python…
Вход
values=[4, 0, 4, 1, 1, 0], fee=3
Ожидается
8

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 109 тестов на сервере, включая скрытые.