hdu 1712 裸分組揹包

2021-07-09 23:17:09 字數 671 閱讀 2117

題意:有n門課程,有個人有m天時間去學習,每門課程學習不同的天數會有不同的價值,問最大價值?

分析:這是一道十分裸的分組揹包題。

以下是揹包九講的文段,我剛開始做用的是二維,其實一維就夠了。

這個問題變成了每組物品有若干種策略:是選擇本組的某一件,還是一件都不選 。 也就是說設 f[k][v]表示前 k 組物品花費費用 v 能取得的最大權值,則有:

f[k][v]=max

使用一維陣列的偽**如下:

for 所有的組 k

for v=v..0

for 所有的 i 屬於組 k

f[v]=max

#include#include#include#include#include#define inf 0xfffffff

#define pb push_back

#define ms(x) memset(x,0,sizeof(x))

#define f(i,a,b) for(int i=a;i<=b;i++)

using namespace std;

int dp[150][150],a[150][150];

int main()

}printf("%d\n",dp[n][m]);

}return 0;

}

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天,使得收穫最大。思路 可以將每一門課看成乙個分組,每門課不同天數的選擇看成是分組的物品 顯然只能有乙個選擇 物品...