本題由三種思路,但是第三種和第一種感覺差不多。
1 可以發現乙個物品最多五種狀態。於是用5種狀態進行01揹包。
要注意 狀態轉移的過程。
2 樹形dp,其實也是01揹包的層次過程。。
3 分組揹包。但是同普通的分組揹包不一樣的是,選附件也要選主件。所以我在 分組資料裡放乙個(0,0)。dp的時候加上主件。
#include #include #include using namespace std;
const int maxn=70;
int a[maxn];
int b[maxn];
int belong[maxn];
int dp[maxn][32100];
int m,n;
int treedp(int cost,int num)
}} return 0;
}int main()
treedp(m,0);
for(int i=0;i<=n;i++)
else
else}}
for(int i=1;i<=n;i++)
else
dp[i][j]=dp[i-1][j];}}
printf("%d\n",dp[n][m]);
}return 0;
}
#include #include #include using namespace std;
const int maxn=70;
vector>v[maxn];
int va[maxn];
int imp[maxn];
int dp[50006];
// 分組揹包,比01揹包泛化能力要強。
int main()
else
//}}
printf("%d\n",dp[allv]);
return 0;
}
金明的預算方案
problem description 金明今天很開心,家裡購置的新房就要領鑰匙了,新房裡有一間金明自己專用的很寬敞的房間。更讓他高興的是,媽媽昨天對他說 你的房間需要購買哪些物品,怎麼布置,你說了算,只有不超過n元錢就行 今天一早,金明就開始做預算了,他把想買的物品分為兩類 主件和附件,附件是從屬...
金明的預算方案
題目描述 金明今天很開心,媽媽昨天對他說 你的房間需要購買哪些物品,你說了算,只要不超過n元錢就行 今天一早,金明就開始做預算了,他把想買的物品分為兩類 主件與附件,附件是從屬於某個主件的,下表就是一些主件與附件的例子 主件 附件 電腦 印表機,掃瞄器 書櫃 圖書 書桌 檯燈,文具 工作椅 無 如果...
金明的預算方案
題目 分析一下,若想選附件,必然要選其主件,看上去是個依賴揹包問題,也就是樹形dp,但是這個題目限制了乙個問題,也就是乙個主件至多有2個附件,那麼也就只有4種方案,只選主件,選主件和附件1,選主件和附件2,選主件和附件1和附件2。只有4種方案,所以將其轉化成為乙個組合揹包問題。include inc...