Ctrl K

Самая дешёвая корзина с наборами

Средняя
В магазине продаются n видов товаров; товар вида i стоит prices[i]. Вам нужно купить ровно wanted[i] штук товара вида i — ни больше, ни меньше, даже если лишний товар сделал бы покупку дешевле. Кроме поштучной продажи, есть наборы bundles. Набор bundles[i] — массив длины n + 1: bundles[i][j] — сколько штук товара вида j в него входит, а последнее число — цена набора. Любой набор можно покупать сколько угодно раз. Верните минимальную сумму, за которую можно собрать нужную корзину.
Пример 1
prices=[3, 4], bundles=[[2, 1, 8], [0, 3, 10]], wanted=[2, 3] → 16

Поштучно вышло бы 2·3 + 3·4 = 18. Можно взять первый набор за 8 и докупить два товара второго вида за 8, или второй набор за 10 и два товара первого вида за 6 — в обоих случаях 16. Взять оба набора нельзя: товаров первого вида будет больше нужного.

Пример 2
prices=[1, 1], bundles=[[1, 1, 5]], wanted=[1, 1] → 2

Набор стоит дороже, чем те же товары поштучно, поэтому выгоднее заплатить 2.

Пример 3
prices=[5], bundles=[[2, 7]], wanted=[5] → 19

Набор можно брать несколько раз: два набора за 14 дают 4 товара, пятый покупается за 5. Итого 19.

Ограничения
  • n == prices.length == wanted.length
  • 1 ≤ n ≤ 6
  • 0 ≤ prices[i] ≤ 100
  • 0 ≤ wanted[i] ≤ 10
  • 1 ≤ bundles.length ≤ 100
  • bundles[i].length == n + 1
  • 0 ≤ bundles[i][j] ≤ 50 для j < n, цена набора bundles[i][n] — от 0 до 1000
  • в каждом наборе есть хотя бы один товар
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиГруппы с равными суммами СредняяКвадратная рамка из палочек СредняяРассадка с делимостью СредняяМеньше всего пешком до самокатов СредняяСтажёры и тренеры Средняя
загружаем Python…
Вход
prices=[3, 4], bundles=[[2, 1, 8], [0, 3, 10]], wanted=[2, 3]
Ожидается
16

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