dp 揹包 開心的金明

2022-05-27 20:30:26 字數 1013 閱讀 3918

題目描述

金明今天很開心,家裡購置的新房就要領鑰匙了,新房裡有一間他自己專用的很寬敞的房間。更讓他高興的是,媽媽昨天對他說:「你的房間需要購買哪些物品,怎麼布置,你說了算,只要不超過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≤10000),p表示該物品的重要度(1−5

)輸出格式

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

<100000000)。

01揹包問題:i表示取第i個物品,j表示容積,每個物品只取一次。f[i][j]表示取1~i個物品最多能取得價值。

狀態轉移方程:f[i][j]是f[i-1][j]和f[i-1][j-w[i]]中較大的乙個。

第i個物品取和不取兩種情況的較大值

1 #include2 #include 3 #include 4

using

namespace

std;

5int f[30010];6

intmain()717

}18 printf("%d"

,f[t]);

19return0;

20 }

分組揹包 開心的金明

example sicily 1346 開心的金明 1 大牛的思路分析 揹包問題,只是主件繫結了一些附件,可以轉化成分組揹包,乙個主件及其附件代表一組。但是 分組揹包 中一組地物品互斥,所以這裡要做一次轉化 將這個集合作為一組,這裡要慶幸最多兩個附件。解 for i 1 i m i else 2 小...

開心的金明(01揹包)

演算法訓練 開心的金明 時間限制 1.0s 記憶體限制 256.0mb 問題描述 金明今天很開心,家裡購置的新房就要領鑰匙了,新房裡有一間他自己專用的很寬敞的房間。更讓他高興的是,媽媽昨天對他說 你的房間需要購買哪些物品,怎 麼布置,你說了算,只要不超過n元錢就行 今天一早金明就開始做預算,但是他想...

揹包模型 開心的金明

金明今天很開心,家裡購置的新房就要領鑰匙了,新房裡有一間他自己專用的很寬敞的房間。更讓他高興的是,媽媽昨天對他說 你的房間需要購買哪些物品,怎麼布置,你說了算,只要不超過n元錢就行 今天一早金明就開始做預算,但是他想買的東西太多了,肯定會超過媽媽限定的n元。於是,他把每件物品規定了乙個重要度,分為5...