andre_joy

导航

2012年10月2日

小结论(3)

摘要: 分组背包的学习结束了,收获颇多,分组背包是个很神奇的东西。分组背包经常一般是三种情况。(1)每组物品最多选一个(最常规的)for(i = 0; i < n; i++) //n是总共种类 for(j = vmax; j >= 0; j--) //vmax是背包最大容量 for(k = 0; k < num[i]; k++) //num[]为该类物品个数 if(j >= v[k]) dp[j] = max(dp[j], dp[j-v[k]+w[k]]);这是一维的情况,二维很容易扩展,接下来两种题目必须用二维。而且用到用到01背包里面恰好到达的概念,必须... 阅读全文

posted @ 2012-10-02 01:52 andre_joy 阅读(150) 评论(0) 推荐(0) 编辑

hdu 3535

摘要: 地址:http://acm.hdu.edu.cn/showproblem.php?pid=3535题意:混乱背包,s=0,至少选一种,s=1,最多选一种,s=2,随意选。mark:分别三种情况背包。初始化的时候不能直接把dp[i-1][j]赋值给dp[i][j],必须取最大值。代码:#include <stdio.h>#include <string.h>#include <stdlib.h>const int N = 110;int n,t,m,s;int v[N],w[N];int dp[N][N];int i,f;int max(int a, int 阅读全文

posted @ 2012-10-02 01:37 andre_joy 阅读(151) 评论(0) 推荐(0) 编辑