Рюкзак: минимальный вес на заданную стоимость
Динамическое программирование
Сложная
Даны веса weights и стоимости values предметов (values обычно малы, а веса могут быть огромными - обычный рюкзак по весу не уложится в память) и целевая стоимость target_value.
Выберите подмножество предметов (каждый - не более одного раза) с суммарной стоимостью НЕ МЕНЬШЕ target_value и верните минимально возможный суммарный вес. Если набрать нужную стоимость нельзя, верните -1.
Подсказка: раз стоимости малы, стройте ДП по достижимой стоимости (а не по весу): dp[v] - минимальный вес, чтобы набрать стоимость ровно v.
Сигнатура функции
min_weight_for_value(weights: list[int], values: list[int], target_value: int) -> int
Примеры
| Вход | Ожидаемый результат |
| [[1000000, 2000000, 1500000], [3, 4, 5], 7] | 2500000 |
1решили
1пытались
100%успешность
Войдите, чтобы решить →