hdu 1059 Dividing
2014-07-30 14:39
295 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1059
View Code
#include <cstdio> #include <cstring> #include <algorithm> #define maxn 2000000 using namespace std; int dp[maxn]; int a[maxn]; int w[maxn]; int sum,v; int main() { int cas=0; while(scanf("%d",&a[1])!=EOF) { sum=a[1]; for(int i=2; i<=6; i++) { scanf("%d",&a[i]); sum+=a[i]*i; } if(!sum) break; printf("Collection #%d:\n",++cas); if(sum&1) { printf("Can't be divided.\n\n"); continue; } memset(dp,0,sizeof(dp)); int cnt=1; for(int i=1; i<=6; i++) { for(int j=1; j<=a[i]; j<<=1) { w[cnt++]=j*i; a[i]-=j; } if(a[i]>0) { w[cnt++]=a[i]*i; } } v=sum/2; for(int i=1; i<cnt; i++) { for(int j=v; j>=w[i]; j--) { dp[j]=max(dp[j-w[i]]+w[i],dp[j]); } } if(dp[v]==sum/2) { printf("Can be divided.\n\n"); } else printf("Can't be divided.\n\n"); } return 0; }
View Code
相关文章推荐
- (step3.3) hdu 1059(Dividing——多重背包)
- hdu 1059 Dividing (多重背包)
- 【多重背包】HDU 1059 Dividing
- hdu 1059 Dividing
- HDU 1059 Dividing 多重背包
- HDU 1059 Dividing (多重背包+二进制优化)
- 【HDU 1059】Dividing 【多重背包 两种解法】
- HDU 1059 Dividing 多重背包
- HDU-1059 Dividing
- HDU——1059Dividing(母函数或多重背包)
- HDU1059_Dividing_多重背包
- HDU 1059 Dividing(多重背包)
- hdu 1059 Dividing
- HDU 1059 Dividing 多重背包
- hdu 1059 Dividing
- DP(完全背包二进制优化) Problem T:Dividing(HDU 1059)
- HDU 1059 Dividing(多重背包)
- HDU 1059 Dividing【多重背包】
- [0-1背包]HDU 1059 Dividing
- 【二进制拆分多重背包】【HDU1059】【Dividing】