洛谷 P1060 01揹包

2021-09-11 01:53:19 字數 1104 閱讀 5850

金明今天很開心,家裡購置的新房就要領鑰匙了,新房裡有一間他自己專用的很寬敞的房間。更讓他高興的是,媽媽昨天對他說:「你的房間需要購買哪些物品,怎麼布置,你說了算,只要不超過n元錢就行」。今天一早金明就開始做預算,但是他想買的東西太多了,肯定會超過媽媽限定的n元。於是,他把每件物品規定了乙個重要度,分為5等:用整數1−5表示,第5等最重要。他還從網際網路上查到了每件物品的**(都是整數元)。他希望在不超過n元(可以等於n元)的前提下,使每件物品的**與重要度的乘積的總和最大。

設第jjj件物品的**為v[j],重要度為w[j],共選中了k件物品,編號依次為j1,j2,…,jk則所求的總和為:

v[j1]×w[j1]+v[j2]×w[j2]+…+v[jk]×w[jk]

請你幫助金明設計乙個滿足要求的購物單。

輸入格式:

第一行,為2個正整數,用乙個空格隔開:n、m,其中n<30000表示總錢數,m<25為希望購買物品的個數。

從第2行到第m+1行,第j行給出了編號為j−1的物品的基本資料,每行有2個非負整數v p v ,其中v表示該物品的**(v≤10000),p表示該物品的重要度(1−5)

輸出格式:

1個正整數,為不超過總錢數的物品的**與重要度乘積的總和的最大值(<100000000)。

輸入樣例#1:複製

1000 5

800 2

400 5

300 5

400 3

200 2

輸出樣例#1:複製

3900
noip 2006 普及組 第二題

思路:按照題意把重要度與物品**乘積當做物品價值,很簡單的01揹包。

#includeusing namespace std;

int f[30005];

int w[30],v[30];

int main()

for(int i=0;i=w[i];j--)

f[j]=max(f[j],f[j-w[i]]+v[i]);

cout

}

洛谷p1049 01揹包

dp水之旅 揹包有乙個箱子容量為v 正整數,0 v 20000 同時有n個物品 0 n 30,每個物品有乙個體積 正整數 要求n個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。輸入格式 乙個整數,表示箱子容量 乙個整數,表示有n個物品 接下來n行,分別表示這n 個物品的各自體積 輸出格式 乙個...

洛谷P2871與揹包

揹包用於尋找最優解,適用於在一堆數值中找尋符合題目要求條件的最優組合。揹包其實就是兩個迴圈 蒟蒻的蒟蒻總結 以p2871為例 在可裝下的條件下找到最大價值組合。起初想用 自認為是動歸 蒟蒻的思路 倒著想 第五個有裝下裝不下兩種情況 1.裝下 五個的價值和。2裝不下 判斷 四個的最大價值和 與 三個的...

洛谷P2392 揹包問題

看完題目就感覺是個貪心,樣例也能推過去,於是交了以下 author hesorchen date 2020 04 14 10 33 26 lastedittime 2020 05 13 14 29 51 link include include include include include inc...