
动态规划
nywsp
这个作者很懒,什么都没留下…
展开
-
分组背包
问题有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。这些物品被划分为若干组,每组中的物品互相冲突,最多选一件。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。算法这个问题变成了每组物品有若干种策略:是选择本组的某一件,还是一件都不选。也就是说设f[k][v]表示前k组物品花费费用v能取得的最大权值,则有:f[k][v]=max{f[k-1][...转载 2012-07-11 16:44:30 · 12964 阅读 · 1 评论 -
多重背包
条件是一种物品可以取最多一定的次数。 推荐题目nyoj546题。。http://acm.nyist.net/JudgeOnline/problem.php?pid=546 这个刚开始没看懂,,,其实这种问题可以转化为01背包问题,。,就是还有优化的空间。。。 方法是:将第i种物品分成若干件物品,其中每件物品有一个系数,这件物品的费用和价值均是原来的费用和价值乘以这个系数。使这些系原创 2012-07-11 10:48:49 · 696 阅读 · 0 评论 -
完全背包模版
废话不多说,完全背包就是一个物品可以取无数次。。简单的dp。。。。 自己写的模版 void dp(int w,int c) { for(j=c;j f[j]=f[j]>f[j-c]+w?f[j]:f[j-c]+w; }原创 2012-07-11 09:22:24 · 407 阅读 · 0 评论 -
hdu 4508 完全背包模版二维
#include #include int v[102],s[102],ans[100002]; int main() { int a; while(~scanf("%d",&a)&&a) { int i,j; memset(ans,0,sizeof(ans)); for(i=1;i<=a;i++) scanf原创 2013-03-22 08:44:16 · 577 阅读 · 0 评论 -
hdu 4501 多维背包模版
#include #include #include using namespace std; const int mm=110; int dp[mm][mm][11]; class node { public:int a,b,c; }f[mm]; int n,v1,v2,kk; void Max(int &x,const int y) { if(x<y)x=y; } int main()原创 2013-03-26 16:49:38 · 983 阅读 · 0 评论