思路:因為每個主件最多只有兩個附件,所以列舉每個主件如果滿足條件的話可以分為五種情況購買:什麼都不買;只買主件;買主件和第乙個附件;買主件和第二個附件;買主件和兩個附件。然後分別計算出每種情況的物品**與重要度乘積之和,最後取最大值即可.
#include
using
namespace std;
int v[
32001][
3], p[61]
[3],f[
32001];
/*** v[i][j]代表第i個物品的第j個附件的**
** p[i][j]代表第i個物品的第j個附件的重要度
** f[i]代表花了i元時,所買物品的**與重要度乘積之和的最大值
*/int
cost2
(int i,
int x,
int y)
intcost3
(int i,
int x,
int y,
int z)
intvp
(int i,
int x)
intmain()
else
if(v[_q][1
]==0)
else
}for
(int i =
1; i <= m; i++
)for
(int j = n; j >=
0; j--
) cout<
;}
洛谷 P1064 金明的預算方案
題目描述 金明今天很開心,家裡購置的新房就要領鑰匙了,新房裡有一間金明自己專用的很寬敞的房間。更讓他高興的是,媽媽昨天對他說 你的房間需要購買哪些物品,怎麼布置,你說了算,只要不超過n元錢就行 今天一早,金明就開始做預算了,他把想買的物品分為兩類 主件與附件,附件是從屬於某個主件的,下表就是一些主件...
洛谷 P1064 金明的預算方案
這是乙個揹包型別的問題,但是存在附件這個問題,因為要拿附件就一定要拿主件,而且附件最多只有2種,假設有2種附件,那麼這個物品就有三種狀態 第一種就是只拿主鍵,dp j max dp j dp j now i v now i v now i p 第二種就是那主鍵和第乙個附件 dp j max dp j...
洛谷 P1064 金明的預算方案
題目描述 金明今天很開心,家裡購置的新房就要領鑰匙了,新房裡有一間金明自己專用的很寬敞的房間。更讓他高興的是,媽媽昨天對他說 你的房間需要購買哪些物品,怎麼布置,你說了算,只要不超過n元錢就行 今天一早,金明就開始做預算了,他把想買的物品分為兩類 主件與附件,附件是從屬於某個主件的,下表就是一些主件...