hdu2191: 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
2012-07-26 11:54
260 查看
hdu2191: http://acm.hdu.edu.cn/showproblem.php?pid=2191 题意:容量为v的背包,有n种物品,每种物品时有限个的,有不同体积及价值,求最大价值 解法:多重背包 code:
#include<iostream> #include<cstdio> #include<algorithm> int v[200],w[200],c[200],f[200]; int max(int a,int b) { if(a>b) return a; else return b; } int main() { int t,n,m,i,j,k,x; scanf("%d",&t); for(int y=0;y<t;y++) { memset(f,0,sizeof(f)); scanf("%d%d",&n,&m); for(j=0;j<m;j++) scanf("%d%d%d",&v[j],&w[j],&c[j]); for(i=0;i<m;i++) { if(v[i]*c[i]>n) //可看成完全背包 { for(j=v[i];j<=n;j++) //顺序 f[j]=max(f[j],f[j-v[i]]+w[i]); } else { for(k=1;c[i]>k;k=k*2) //二进制的思想,分为若干个价值为k*v[i]的物品,再01背包 { for(j=n;j>=k*v[i];j--) //逆序 f[j]=max(f[j],f[j-k*v[i]]+k*w[i]); c[i]=c[i]-k; } for(j=n;j>=c[i]*v[i];j--) f[j]=max(f[j],f[j-c[i]*v[i]]+c[i]*w[i]); } } printf("%d\n",f ); } } /* input: 1 //case数 8 2 //经费、大米种类 2 100 4 //价格、重量、袋数 4 100 2 output: 400 //最大重量 */
相关文章推荐
- HDU2191:悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(多重背包)
- HDU2191悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
- hdu2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 --多重背包
- HDU2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
- HDU2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
- hdu2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
- 多重背包 hdu2191 悼念512汶川大地震遇难同胞――珍惜现在,感恩生活
- 单调队列 hdu2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
- hdu2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 (这个只是题目名字) (多重背包)
- [原]hdu2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 (这个只是题目名字) (多重背包)
- HDU2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 【多重背包】
- hdu2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 (多重背包)
- hdu2191悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(多重背包)
- [原]hdu2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 (这个只是题目名字) (多重背包)
- HDU2191_悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(背包/多重背包)
- hdu2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 (这个只是题目名字) (多重背包)
- hdu2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(多重背包)
- hdu2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(多重背包)
- HDU2191-悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
- hdu2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 (这个只是题目名字) (多重背包)