HDU 1712 ACboy needs your help (分组背包模版题)

时间:2021-10-23 08:21:56

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1712

有n门课,和m天时间。每门课上不同的天数有不同的价值,但是上过这门课后不能再上了,求m天里的最大价值。

分组背包模版题。

     //#pragma comment(linker, "/STACK:102400000, 102400000")
#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <vector>
#include <cmath>
#include <ctime>
#include <list>
#include <set>
#include <map>
using namespace std;
typedef long long LL;
typedef pair <int, int> P;
const int N = 1e2 + ;
int dp[N], a[N][N], inf = 1e6; int main()
{
int n, m;
while(~scanf("%d %d", &n, &m) && (n || m)) {
for(int i = ; i <= n; ++i) {
for(int j = ; j <= m; ++j) {
scanf("%d", &a[i][j]);
dp[j] = ;
}
}
for(int i = ; i <= n; ++i) { //n组
for(int j = m; j >= ; --j) { //体积
for(int k = ; k <= m; ++k) { //第i组的各个数据
if(j - k >= ) {
dp[j] = max(dp[j - k] + a[i][k], dp[j]);
}
}
}
}
printf("%d\n", dp[m]);
}
return ;
}