ZOJ1149 POJ1014 HDU1059 Dividing,多重背包问题
来源:互联网 发布:不惑 知天命 编辑:程序博客网 时间:2024/05/18 01:50
很经典的多重背包问题,大家可以看看《背包九讲》里面的第三讲。
/******************************************************************************* # Author : Neo Fung # Email : neosfung@gmail.com # Last modified: 2011-10-02 20:46 # Filename: ZOJ1149 POJ1014 HDU1059 Dividing.cpp # Description : ******************************************************************************/// #include "stdafx.h"// #define DEBUG#include <fstream>#include <stdio.h>#include <iostream>#include <string.h>#include <string>#include <memory.h>using namespace std;int dp[450000],value[200000];int main(void){#ifdef DEBUG freopen("data.txt","r",stdin); #endif int ind=1;int num[7];while(scanf("%d %d %d %d %d %d",&num[1],&num[2],&num[3],&num[4],&num[5],&num[6])!=EOF){int total=0;for(int i=1;i<=6;++i)total+=i*num[i];if(total==0) break;printf("Collection #%d:\n",ind++);if(total%2){printf("Can't be divided.\n\n");continue;}int half=total/2;int ncount=0;memset(dp,0,sizeof(dp));for(int i=1;i<=6;++i)//二进制拆分{int temp=num[i];if(temp==0) continue;int pow2=1;while(temp>pow2){value[ncount++]=pow2*i;temp-=pow2;pow2*=2;}if(temp) value[ncount++]=temp*i;}for(int i=0;i<ncount;++i)//转变为0/1背包问题for(int j=half;j>=value[i];--j)dp[j]=max(dp[j],dp[j-value[i]]+value[i]);if(dp[half]==half)printf("Can be divided.\n\n");elseprintf("Can't be divided.\n\n");}return 0;}
- ZOJ1149 POJ1014 HDU1059 Dividing,多重背包问题
- HDU1059 && POJ1014 :Dividing(多重背包)
- hdu1059 &poj1014 Dividing (多重背包)
- poj1014 hdu1059 Dividing 多重背包
- HDU1059 && POJ1014 :Dividing(多重背包)
- poj1014+hdu1059--A - Dividing(多重背包,二进制优化)
- hdu1059 Dividing 多重背包
- [hdu1059]Dividing 多重背包
- hdu1059 Dividing (多重背包)
- hdu1059 Dividing 【多重背包】
- POJ1014--多重背包--Dividing
- poj1014 Dividing 动态规划 多重背包问题
- 背包水题 zoj3623 Poj1014&Zoj1149&Hdu1059 Hdu2844
- HDU1059 Dividing 多重背包 ACM
- hdu1059 Dividing (多重背包)
- hdu1059 Dividing(多重背包)
- HDU1059 Dividing (多重背包)
- HDU1059 Dividing(多重背包)
- uva10215
- SCJP复习笔记(1)
- 从PC向mac上拷文件
- Windows 下安装ArcGIS Server9遇到的若干问题及其解决方法
- Map线程安全几种实现方法
- ZOJ1149 POJ1014 HDU1059 Dividing,多重背包问题
- Oracle 10.2.0.3中切换TEMP Tablespace Group
- 简单四则运算--据说是华为机考题
- 链表的学习指导
- 数据的离散化
- Struts2's HelloWorld
- Ubuntu开机自动挂载磁盘分区
- Windows消息机制『经典』
- 大连赛区现场赛D题 ZOJ 3542 Hexadecimal View