蒜頭君去超市購物,他有乙隻容量為 v 的購物袋,同時他買了 n 件物品,已知每件物品的體積 vi。蒜頭君想知道,挑選哪些物品放入購物袋中,可以使袋子剩餘的空間最小。
輸入格式
第一行輸入乙個整數 v(1≤v≤20,000),表示購物袋的容量。
第二行輸入乙個整數 n(01≤n≤30),表示蒜頭君購買的 n 件物品。
接下來輸入 n 行,每行輸入乙個整數 vi(1≤vi≤10,000),表示第 i 件物品的體積。
輸出格式
輸出一行,輸出乙個整數,表示購物袋最小的剩餘空間。
樣例輸入205
7573
7樣例輸出
1
貪心演算法
#include
using
namespace std;
int b[31]
;int
main()
5個樣例通過4組
測評用例 1:答案錯誤 [
2.000 毫秒,352 kb]
用例輸入:103
485用例正確輸出:
1你的輸出:
2
我的理解是動態規劃會在元素個數為1時將容量細分到最小並從小到大得出每一種情況的最優解,在每新增乙個元素時更新最優解,確保在當前情況下每乙個容量對應乙個最優解。由歸納法可知,當元素個數為1時一定為最優解。假設當元素個數為k時為最優解,那麼不難得出當元素個數為k+1時同樣為最優解。因此動態規劃的結果為最優解。
#include
using
namespace std;
int a[31]
[200001];
int b[31]
;int
main()
cout<[v];
return0;
}
蒜頭君的購物袋2
蒜頭君去超市購物,他有乙隻容量為 vv 的購物袋,同時他想買 nn 件物品,已知每件物品的體積 v ivi 和重要度 p ipi 蒜頭君想知道,挑選哪些物品放入購物袋中,可以使得買到的物品重要度之和最大,且物品體積和不超過購物袋的容量。輸入格式 第一行輸入兩個整數 vv 1 leq v leq 10...
蒜頭君的購物袋3
蒜頭君去超市購物,他有乙隻容量為 v 的購物袋,同時他想買 n 種物品,已知每種物品的體積 vi和重要度 pi 蒜頭君想知道,怎麼挑選物品放入購物袋中,可以使得買到的物品重要度之和最大,且物品體積和不超過購物袋的容量。注意超市中每種物品的數量無限多。輸入格式 第一行輸入兩個整數 n,v 1 n 1,...
計蒜客 蒜頭君的購物袋2
問題描述 蒜頭君去超市購物,他有乙隻容量為 v 的購物袋,同時他想買 n 件物品,已知每件物品的體積 vi和重要度 pi。蒜頭君想知道,挑選哪些物品放入購物袋中,可以使得買到的物品重要度之和最大,且物品體積和不超過購物袋的容量。輸入格式 第一行輸入兩個整數 v 1 v 1000 和 n 1 n 10...