Рюкзак: минимальный вес на заданную стоимость

Динамическое программирование Сложная
Даны веса 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%успешность
Войдите, чтобы решить →