BZOJ 4247 掛飾 揹包DP

2021-08-29 01:39:15 字數 771 閱讀 6936

貪心的想法:在保證正確性的情況下盡量多的掛鉤。

所以我們先把每個掛飾按照掛鉤數量從大到小排序。

f [i

][j]

f[i][j]

f[i][j

]表示排序後的前i

ii個物品在有j

jj個掛鉤的情況下的最大價值之和。

那麼對於第i

ii個物品,無非就是選擇與否的關係,樸素的轉移。

而對於貪心要保證的正確性,我們在狀態轉移的時候就已經保證了:

#include #include #include #include #include #define ll long long

#define rep(i,x,y) for(ll i=(x);i<=(y);i++)

#define repl(i,x,y) for(ll i=(x);i<(y);i++)

#define repd(i,x,y) for(ll i=(x);i>=(y);i--)

using namespace std;

const ll n=2e3+5;

const ll inf=1e18;

ll n,ans,f[n][n];

struct node a[n];

inline ll read()

while(ch>='0'&&ch<='9')

return f?-x:x;

}bool cmp(node p,node q)

int main()

bzoj4247 掛飾 揹包dp

題目描述 joi君有n個裝在手機上的掛飾,編號為1.n。joi君可以將其中的一些裝在手機上。joi君的掛飾有一些與眾不同 其中的一些掛飾附有可以掛其他掛件的掛鉤。每個掛件要麼直接掛在手機上,要麼掛在其他掛件的掛鉤上。直接掛在手機上的掛件最多有1個。此外,每個掛件有乙個安裝時會獲得的喜悅值,用乙個整數...

BZOJ 4247 掛飾 01揹包

joi君有n個裝在手機上的掛飾,編號為1.n。joi君可以將其中的一些裝在手機上。joi君的掛飾有一些與眾不同 其中的一些掛飾附有可以掛其他掛件的掛鉤。每個掛件要麼直接掛在手機上,要麼掛在其他掛件的掛鉤上。直接掛在手機上的掛件最多有1個。此外,每個掛件有乙個安裝時會獲得的喜悅值,用乙個整數來表示。如...

BZOJ 4247 掛飾(揹包變形)

雖然轉移方程可以一眼看出 但是煩就煩在為何要排序 有人說這是乙個貪心,又有人說這是乙個保障正確性的。就按照貪心的想法好了 在保證正確性的情況下盡量多的掛鉤。include define n 2005 define inf 0x3f3f3f3f using namespace std int n,f ...