Ctrl K

Разбивка заказов на партии

Сложная
В цех поступила очередь заказов. Для i-го заказа известны трудоёмкость work[i] и вес weight[i]. Очередь нужно разбить на непрерывные партии, не меняя порядка: первая партия, вторая и так далее. Партия под номером b (нумерация с 1), в которую входят заказы с l по r, обходится в (work[0] + work[1] + … + work[r] + delay · b) · (weight[l] + … + weight[r]). Обратите внимание: в первой скобке суммируется трудоёмкость всех заказов от начала очереди до конца партии, а не только внутри неё. Верните минимальную суммарную стоимость всех партий.
Пример 1
work=[2, 3], weight=[1, 4], delay=2 → 35

Одна партия: (2 + 3 + 2·1)·(1 + 4) = 35. Две партии: (2 + 2·1)·1 + (2 + 3 + 2·2)·4 = 4 + 36 = 40. Ответ 35.

Пример 2
work=[5], weight=[3], delay=1 → 18

Единственная партия стоит (5 + 1·1)·3 = 18.

Пример 3
work=[1, 9, 2, 2], weight=[6, 1, 1, 5], delay=3 → 164
Ограничения
  • 1 ≤ len(work) ≤ 1000
  • len(weight) = len(work)
  • 1 ≤ work[i], weight[i] ≤ 1000
  • 1 ≤ delay ≤ 1000
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
загружаем Python…
Вход
work=[2, 3], weight=[1, 4], delay=2
Ожидается
35

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