hdu1059 Dividing(多重背包)
来源:互联网 发布:查询企业的软件 编辑:程序博客网 时间:2024/05/17 02:37
hdu1059
题目
http://acm.split.hdu.edu.cn/showproblem.php?pid=1059
思路
http://www.cnblogs.com/kuangbin/archive/2012/05/10/2493602.html (对自己说:很奇怪,这题用刚刚的思路就不对了,总之先记一下,以价值记价值)
代码
#include<iostream>#include<cstring>#include<cstdio>#include<vector>#include<queue>#include<algorithm>#include<stack>using namespace std;typedef long long ll;int f[120005];int v,k;int a[10];void ZeroOnePack(int cost,int weight){ for(int i=v; i>=cost; i--) if(f[i-cost]+weight>f[i]) f[i]=f[i-cost]+weight;}void CompletePack(int cost,int weight){ for(int i=cost; i<=v; i++) if(f[i-cost]+weight>f[i]) f[i]=f[i-cost]+weight;}void MultiplePack(int cost,int weight,int amount){ if(cost*amount>=v) CompletePack(cost,weight); else { for(int k=1; k<amount;) { ZeroOnePack(k*cost,k*weight); amount-=k; k<<=1; } ZeroOnePack(amount*cost,amount*weight); }}int main(){ int tol; int kase=1; while(1) { tol=0; for(int i=1; i<7; i++) { scanf("%d",&a[i]); tol+=a[i]*i; } if(tol==0) break; if(tol%2==1) { printf("Collection #%d:\nCan't be divided.\n\n",kase++); continue; } else { v=tol/2; memset(f,0,sizeof(f)); for(int i=1; i<7; i++) MultiplePack(i,i,a[i]); if(f[v]==v) printf("Collection #%d:\nCan be divided.\n\n",kase++); else printf("Collection #%d:\nCan't be divided.\n\n",kase++); } } return 0;}
0 0
- hdu1059 Dividing (多重背包)
- hdu1059 Dividing(多重背包)
- HDU1059 Dividing (多重背包)
- HDU1059 Dividing(多重背包)
- hdu1059 Dividing 多重背包
- [hdu1059]Dividing 多重背包
- hdu1059 Dividing (多重背包)
- hdu1059 Dividing 【多重背包】
- hdu1059 Dividing(多重背包+二进制优化)
- hdu1059 Dividing(多重背包+二进制优化)
- HDU1059:Dividing(多重背包二进制优化)
- HDU1059 && POJ1014 :Dividing(多重背包)
- hdu1059 &poj1014 Dividing (多重背包)
- HDU1059 Dividing 多重背包 ACM
- poj1014 hdu1059 Dividing 多重背包
- HDU1059 && POJ1014 :Dividing(多重背包)
- ZOJ1149 POJ1014 HDU1059 Dividing,多重背包问题
- 【二进制拆分多重背包】【HDU1059】【Dividing】
- 称砝码
- git stash提交PR的正确步骤&git squash技术
- 密码算法详解——AES
- POI格式化Cell样式
- Labview
- hdu1059 Dividing(多重背包)
- Spring读取Properies中参数,properies或xml文件不在src下
- 编程下 Touch 事件的分发和消费机制dispatchTouchEvent()、onInterceptTouchEvent()和onTouchEvent()
- cocoa pod 管理代码时,第一次安装执行pod setup 很慢的解决方式
- Android 使用android-support-multidex解决Dex超出方法数的限制问题,让你的应用不再爆棚
- Docker简介/安装/使用
- 【区别总结】C、Java和脚本语言区别
- Spark 工作原理及核心RDD 详解
- Vimium快捷键