C 金明的預算方案

2021-09-02 13:22:11 字數 1363 閱讀 4572

總結好吧_我太懶了……

題目鏈結

典型的樹形dp,不過我不會但是我用的是另外一種分析題目的方法。

每個主件可以有0個、1個或2個附件。

沒錯,這幾個字就是關鍵!

可以有這樣five kinds of狀態:

1) 不選該件物品

2) 只選主件

3) 選主件+第乙個附件

4) 選主件+第二個附件

5) 選主件+第乙個附件+第二個附件

總結成狀態轉移方程就是 :

dp[j]

=max

雖然看上去狀態轉移方程很複雜,實際寫出來也很複雜其實是很好寫的。

所以狀態轉移方程一出來,dp也就有解了……

如果這道題可以有無限個附件的話,這個方案的複雜度就很大,最多有o(2^n),所以這個方法在乙個物體的附件較少的情況下使用。

可能較正解樹狀dp要簡單一些,不過資料大了我也不知道要慢多少

(想一想0-1揹包o(2^n) 和 o(vn)的差距吧 )……

#include

#include

using

namespace std;

#define reg register

inline

intread()

while

(c>=

'0'&&c<=

'9') a=

(a<<1)

+(a<<3)

+c-'0'

,c=getchar()

;return a*f;

}inline

void

write

(int x)

int v=

read()

,n=read()

;struct node

}a[61];

int dp[

32001];

int son[61]

[3];

int s[61]

;bool flag[61]

;inline

intmax

(int a,

int b)

inline

intmax

(int a,

int b,

int c,

int d,

int e)

intmain()

for(reg int i=

1;i<=n;i++

)write

(dp[v]);

}

金明的預算方案

problem description 金明今天很開心,家裡購置的新房就要領鑰匙了,新房裡有一間金明自己專用的很寬敞的房間。更讓他高興的是,媽媽昨天對他說 你的房間需要購買哪些物品,怎麼布置,你說了算,只有不超過n元錢就行 今天一早,金明就開始做預算了,他把想買的物品分為兩類 主件和附件,附件是從屬...

金明的預算方案

題目描述 金明今天很開心,媽媽昨天對他說 你的房間需要購買哪些物品,你說了算,只要不超過n元錢就行 今天一早,金明就開始做預算了,他把想買的物品分為兩類 主件與附件,附件是從屬於某個主件的,下表就是一些主件與附件的例子 主件 附件 電腦 印表機,掃瞄器 書櫃 圖書 書桌 檯燈,文具 工作椅 無 如果...

金明的預算方案

題目 分析一下,若想選附件,必然要選其主件,看上去是個依賴揹包問題,也就是樹形dp,但是這個題目限制了乙個問題,也就是乙個主件至多有2個附件,那麼也就只有4種方案,只選主件,選主件和附件1,選主件和附件2,選主件和附件1和附件2。只有4種方案,所以將其轉化成為乙個組合揹包問題。include inc...