Ctrl K

Дешёвый маршрут по башням

Средняя
В ряд стоят n башен, высота башни i — heights[i]. Вы на башне 0 и хотите попасть на последнюю, n - 1, прыгая только вперёд. С башни i можно прыгнуть на башню j > i в одном из двух случаев: - heights[i] ≤ heights[j], и все башни строго между ними ниже heights[i]; - heights[i] > heights[j], и все башни строго между ними не ниже heights[i]. Приземление на башню j стоит fees[j]. Верните минимальную суммарную стоимость пути до последней башни (за стартовую башню платить не нужно).
Пример 1
heights=[4, 1, 3, 5], fees=[0, 2, 6, 3] → 3

С башни 0 (высота 4) можно сразу прыгнуть на башню 3 (высота 5): обе башни между ними ниже 4. Это стоит 3. Путь 0 → 1 → 2 → 3 обошёлся бы в 2 + 6 + 3 = 11, а на башню 2 с башни 0 прыгнуть нельзя.

Пример 2
heights=[2, 2, 2], fees=[5, 1, 4] → 5

С башни 0 на башню 2 прыгнуть нельзя: между ними башня такой же высоты, а не ниже. Остаётся путь 0 → 1 → 2 за 1 + 4 = 5. Плата за стартовую башню не берётся.

Пример 3
heights=[7], fees=[9] → 0
Ограничения
  • 1 ≤ n ≤ 10⁵
  • len(heights) == len(fees) == n
  • 0 ≤ heights[i], fees[i] ≤ 10⁵
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСумма минимумов отрезков СредняяДерево из произведений листьев СредняяПрямоугольники из одних единиц СредняяПрыжки по камням СредняяВода между стенами Сложная
загружаем Python…
Вход
heights=[4, 1, 3, 5], fees=[0, 2, 6, 3]
Ожидается
3

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