n個物品,每個物品有乙個體積v和價值w。現在你要回答,把乙個物品丟棄後,剩下的物品裝進乙個大小為v的揹包裡能得到的最大價值是多少。
輸入的第一行包含乙個正整數n(n ≤ 5000)。
接下來n行,每行包含兩個正整數v和w(v,w ≤ 5000),分別表示乙個物品的體積和價值。
接下來一行包含乙個正整數q(q ≤ 5000),表示詢問個數。
接下來q行,每行包含兩個正整數v和x(v ≤ 5000,x ≤ n),表示詢問將物品x丟棄以後剩下的物品裝進乙個大小為v的揹包能得到的最大價值。
輸出q行,每行包含乙個整數,表示詢問的答案。
3
3 52 2
1 23
3 13 2
3 3
4
55
有3個物品,第乙個物品的體積為3、價值為5,第二個物品體積為2、價值為2,第三個物品體積為1、價值為2。
有3個詢問:
第乙個詢問是問去掉1物品後剩下的2、3物品填進乙個大小為3的揹包能得到的最大價值。顯然2、3物品都是可以放進揹包的,所以最大價值為2+2=4。
第二個詢問是問去掉2物品後剩下的1、3物品填進乙個大小為3的揹包能得到的最大價值。若我們填3物品,我們只能得到價值2;若我們填1物品,則可以得到價值5。所以最大價值為5。
第三個詢問我們同樣也是填1物品,最大價值為5。
請檢視下發檔案
內的sample2_input.txt和sample2_output.txt。
對於30%的資料,n,q,v,v,w ≤ 10;
對於50%的資料,n,q,v,v,w ≤ 200。
空間:512 mb
[我們可以預處理「字首揹包」、「字尾揹包」,然後詢問時做「揹包合併」的操作。]
另外,為了幫助大家完成題目,我們提供了只包含了輸入輸出功能的程式模板,也提供了含有演算法的大部分實現細節的程式。
你可以根據自己的實際情況,在這些程式的基礎上進行作答,或不參考這些程式,這將與你的得分無關。
這些程式可以從【這裡
訓練第三週之dp 揹包訓練
題目 有n件物品和乙個容量為v的揹包。第i件物品的費用是w i 價值是v i 求解將哪些物品裝入揹包可使價值總和最大。分析 每種物品都有兩種狀態,放或者不放,那麼只要比較放所得的價值與不放揹包內原有價值就能得到最大價值 二維陣列 f i j 表示前i件物品放入容量為j的揹包可以獲得的最大價值 for...
第三週作業 2
程式頭部注釋開始 程式的版權和版本宣告部分 作 者 孫建朋 完成日期 2012 年 02 月 05 日 版 本 號 20120205 對任務及求解方法的描述部分 輸入描述 問題描述 程式輸出 程式頭部的注釋結束 include using namespace std class time time ...
第三週作業2
問題1 這個程式要找的是符合什麼條件的數?問題2 這樣的數存在麼?符合這一條件的最小的數是什麼?問題3 在電腦上執行這一程式,你估計多長時間才能輸出第乙個結果?時間精確到分鐘 電腦 單核cpu 4.0g hz,記憶體和硬碟等資源充足 問題4 在多核電腦上如何提高這一程式的執行效率?using sys...