Ctrl K

Изнашивающиеся шины и пит-стопы

Сложная
Гонка длится laps кругов. Есть несколько типов шин: tyres[i] = [first, ratio] означает, что на свежей шине типа i первый круг проходится за first секунд, а каждый следующий подряд на той же шине — в ratio раз дольше предыдущего. То есть k-й круг подряд занимает first · ratio^(k-1) секунд. Стартовать можно на любой шине. После любого круга можно заехать на пит-стоп и поставить свежую шину любого типа (в том числе того же), это стоит pit_stop секунд. Шин каждого типа сколько угодно. Верните наименьшее время, за которое можно пройти все круги.
Пример 1
tyres=[[1, 3], [4, 2]], pit_stop=4, laps=3 → 9

Два круга на шине 0 (1 + 3), пит-стоп (4) и ещё круг на свежей шине 0 (1): итого 9. Без пит-стопа третий круг стоил бы 9 секунд.

Пример 2
tyres=[[3, 2]], pit_stop=10, laps=4 → 28

Без замены: 3 + 6 + 12 + 24 = 45. С одной заменой после второго круга: 3 + 6 + 10 + 3 + 6 = 28.

Пример 3
tyres=[[5, 2]], pit_stop=1, laps=3 → 17

Замена почти бесплатна, поэтому шину меняют после каждого круга: 5 + 1 + 5 + 1 + 5 = 17.

Ограничения
  • 1 ≤ len(tyres) ≤ 10⁵
  • 1 ≤ first ≤ 10⁵
  • 2 ≤ ratio ≤ 10⁵
  • 1 ≤ pit_stop ≤ 10⁵
  • 1 ≤ laps ≤ 1000
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиВода между стенами СложнаяСамый большой горящий блок СложнаяПрибыль за две сделки СложнаяВсе способы расставить пробелы СложнаяПереход через пещеру Сложная
загружаем Python…
Вход
tyres=[[1, 3], [4, 2]], pit_stop=4, laps=3
Ожидается
9

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