Войти Регистрация
Алгоритмы

94. Минимум рейсов грузового такси

Сложная

Клиент Яндекс Доставки заказал грузовое такси на переезд: weights[i] — вес i-го места в килограммах, грузоподъёмность машины capacity. Каждое место весит не больше capacity, делить места нельзя.

Верните минимальное число рейсов, за которое можно перевезти всё.

В работе: Упаковка в контейнеры при малом n: партии задач на воркер, грузы по машинам, файлы по дискам.

Пример 1

Ввод
weights = [60, 40, 70, 30, 50]
capacity = 100
Вывод
3

60 + 40, 70 + 30, 50 — три рейса. Меньше нельзя: сумма 250.

Пример 2

Ввод
weights = [100]
capacity = 100
Вывод
1

Ограничения

  • 1 ≤ n ≤ 16
  • 1 ≤ weights[i] ≤ capacity ≤ 10⁹
  • Лимит — 3 с на тест (3000 мс).
Как вызывается ваш код Читать ввод и печатать ответ не нужно: мы вызываем функцию на каждом тесте и сравниваем то, что она вернула. print() и console.log() уходят в консоль.
def min_trips(weights, capacity):
ДП по подмножествамБитовые маскиУпаковка в контейнерыцельпо числу ответов

Источник: наша задача на данных Яндекса. Условие пересказано своими словами.