問題描述
蒜頭君去超市購物,他有乙隻容量為 v 的購物袋,同時他想買 nn 種物品,已知每種物品的體積 vi和重要度 pi 。蒜頭君想知道,怎麼挑選物品放入購物袋中,可以使得買到的物品重要度之和最大,且物品體積和不超過購物袋的容量。注意超市中每種物品的數量無限多。
輸入格式
第一行輸入兩個整數 n, v (1≤n≤1,000,1≤v≤10,000)。
接下來輸入 n 行,每行輸入兩個整數 vi和pi(1≤vi,pi≤10,000),分別表示第 i 種物品的體積和重要度。
輸出格式
輸出一行,輸出乙個整數,表示能買到物品的最大重要度之和。
樣例輸入
4 20
3 7
2 5
4 6
5 9
樣例輸出
50
#include#includeusing namespace std;int main()
for (int i = 1; i <= n; ++ i)
for (int j = v[i]; j <= v; ++ j)
dp[j] = max(dp[j - v[i]] + p[i], dp[j]);
cout
}
完全揹包問題 蒜頭君的購物袋3
完全揹包問題 當前有n種物品,第i種物品的體積是ci,價值是wi 每種物品的數量都是無限的,可以任意選擇若干件,稱之為完全揹包問題 現在有容量為v的揹包,放入若干物品,使總體積不超過v,並且總價值盡可能大。for int i 1 i n i include includeusing namespac...
蒜頭君的購物袋3
蒜頭君去超市購物,他有乙隻容量為 v 的購物袋,同時他想買 n 種物品,已知每種物品的體積 vi和重要度 pi 蒜頭君想知道,怎麼挑選物品放入購物袋中,可以使得買到的物品重要度之和最大,且物品體積和不超過購物袋的容量。注意超市中每種物品的數量無限多。輸入格式 第一行輸入兩個整數 n,v 1 n 1,...
蒜頭君的購物袋2
蒜頭君去超市購物,他有乙隻容量為 vv 的購物袋,同時他想買 nn 件物品,已知每件物品的體積 v ivi 和重要度 p ipi 蒜頭君想知道,挑選哪些物品放入購物袋中,可以使得買到的物品重要度之和最大,且物品體積和不超過購物袋的容量。輸入格式 第一行輸入兩個整數 vv 1 leq v leq 10...