1y很開心。。分組揹包就是在01揹包的基礎上分了多個組,每組只能取乙個。這樣在01揹包上再加一重迴圈就可以了。。
二維的狀態轉移方程:f[k,v] = max
揹包九講的偽**如下:
for k = 1 to k
for v = v to 0
for item i in group k
f[v] = max
就是先進行每組的遍歷,然後在每組中只挑乙個。。
附上**:
#include#include#includeint dp[110];
int w[110][110];
int c[110][110];
using namespace std;
int main ()
}for(int k = 1;k <= n;k++)}}
cout << dp[m] << endl;
}return 0;
}
HDU 1712 分組揹包問題
題目連線 題意 有m天可以分給n個課程,課程得分和課程上的天數有關,問在m天以內最多一共可以得到多少分 乙個分組揹包的入門題,把乙個課程上不同的天數得到的分數看作是一組的,每組最多只能選乙個物品 每乙個物品的代價是上的天數,價值是這門課在這個天數上得到的分數 那麼這樣就是乙個分組揹包問題 二維dp陣...
HDU 1712 分組揹包問題
物品分多組,每組中的每件都是衝突的,那麼,揹包問題變成,在某組中取乙個,使得價值達到最大,或者這組乙個都不取能使價值達到最大,在01揹包基礎上加乙個迴圈就可以,在減去體積的時候依次減去每組每乙個的體積,這裡的體積正好對應縱座標,所以不必再抽象成c i 了,價值w i 問題有n件物品和乙個容量為v的揹...
hdu 1712 分組揹包
分組的揹包問題 問題 有n件物品和乙個容量為v的揹包。第i件物品的費用是c i 價值是w i 這些物品被劃分為若干組,每組中的物品互相衝突,最多選一件。求解將哪些物品裝入揹包可使這些物品的費用總和不超過揹包容量,且價值總和最大。演算法 這個問題變成了每組物品有若干種策略 是選擇本組的某一件,還是一件...