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

来源:互联网 发布:windows壁纸文件夹 编辑:程序博客网 时间:2024/04/30 07:32
/*不优化会超时~,OMG。。。*/#include <stdio.h>#include <string.h>#define N 105#define M 105#define L 1005int 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;}