您的位置:首页 > 其它

hdoj 3496 Watch The Movie【二维背包】【DP】

2012-02-15 16:33 525 查看
/*
不优化会超时~,OMG。。。
*/
#include <stdio.h>
#include <string.h>
#define N 105
#define M 105
#define L 1005
int max(int a, int b){ 	return a > b ? a : b; }
int f[M][L];
int main()
{
int t, n, m, l, w, v, ans;
int i, j, k;
scanf("%d", &t);
while(t--){
memset(f, 0, sizeof(f));
ans = 0;
scanf("%d%d%d", &n, &m, &l);
for(i=1; i<=n; i++)
{
scanf("%d%d", &w, &v);
for(j=m; j>=2; j--)
for(k=l; k>=w; k--)
if(f[j-1][k-w]) //因为题目的特殊要求,需要这么处理。必须选择M部
f[j][k] = max(f[j-1][k-w]+v, f[j][k]);
f[1][w] = v;
}
for(j=0; j<=l ;j++)
ans = max(ans, f[m][j]);
printf("%d\n", ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  优化