洛谷 p1064 金明的預算方案 有依賴的揹包問題
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define max 100
#define inf 0x3f3f3f3f
typedef
long
long ll;
using namespace std;
int n,m;
//n表示物品個數,m表示擁有的總錢數
int w[max]
;//主件的價值
int v[max]
;//主件的花費
int fw[max][3
];//附件的價值
int fv[max][3
];//附加的花費
//fv[i][0]代表主件i有多少附件,fv[i][1]代表主件i的第乙個附件的花費,
//fv[i][2]代表主件i的第二個附件的花費
//fw[i][1]、fw[i][2]分別代表主件i的第乙個和第二個附件的價值
int dp[
35000];
intmain()
for(
int i=
0;ifor(
int i=
0;i) cin>>m>>n;
int w1,v1;
int number;
//代表附件的資訊,為0表示為主件,大於0表示屬於主件的編號
for(
int i=
1;i<=n;i++
)else
}for
(int i=
1;i<=n;i++
) dp[j]
=max
(dp[j]
,dp[j-v[i]
]+w[i]);
//選擇主件,不選擇附件
if(j>=v[i]
+fv[i][1
])if(j>=v[i]
+fv[i][2
])if(j>=v[i]
+fv[i][1
]+fv[i][2
])}}
cout<;return0;
}
洛谷 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元錢就行 今天一早,金明就開始做預算了,他把想買的物品分為兩類 主件與附件,附件是從屬於某個主件的,下表就是一些主件...