hdu1712 分組揹包(每組最多選1個)

2022-05-31 07:48:13 字數 865 閱讀 9801

【分組揹包】

【題意】acboy要開始選課了,上一門課能夠獲得的收益和他上這門課的時間是有關的,然後給你若干門課,讓你幫他進行選課,

每一門課自然是只能選擇乙個課程時長,問你如何選擇,才能使acboy獲得的受益最大。

for(k=1;k<=k;k++)

for(int v=v;v>=0;v--)

for(int i=item in group k)

f[v]=max(f[v],f[v-c[i]+w[i]);

保證用到的都是k-1所更新的而不是k所更新的。

1 #include2 #include3 #include4 #include5 #include6 #include7 #include8

using

namespace

std;910

const

int n=110;11

intn,m,a[n][n],f[n];

1213

int maxx(int x,int y)

1415

intmain()

1627 memset(f,0,sizeof

(f));

28for(int i=1;i<=n;i++)

29for(int j=m;j>=1;j--)

30for(int k=1;k<=j;k++)

3134 printf("

%d\n

",f[m]);35}

36return0;

37 }

hdu 1712 分組揹包

分組的揹包問題 問題 有n件物品和乙個容量為v的揹包。第i件物品的費用是c i 價值是w i 這些物品被劃分為若干組,每組中的物品互相衝突,最多選一件。求解將哪些物品裝入揹包可使這些物品的費用總和不超過揹包容量,且價值總和最大。演算法 這個問題變成了每組物品有若干種策略 是選擇本組的某一件,還是一件...

hdu 1712 分組揹包)

思路 這是一道簡單的分組揹包,因為每種課可以有多種選擇 花幾天時間在該課上。一旦作出選擇,就不能再選該課,就相當於有多組物品,每組內的物品互相衝突,最多只能選一件。偽碼 for 所有的組k for v v.0 for 所有的i屬於組k f v max 1 include2 const int max...

HDU 1712(分組揹包)

這個寫的不錯 發現問題的起因是hdu 1712,乙個赤裸的分組揹包。所以有必要說一下這個題目。題意 乙個學生用m天的時間複習n門課程,每門課程花費不同的天數,有不同的收穫。問如何安排這m天,使得收穫最大。思路 可以將每一門課看成乙個分組,每門課不同天數的選擇看成是分組的物品 顯然只能有乙個選擇 物品...