多重背包 (poj 1014)
题目:Dividing
题意:6种重量的的石头,每个给定数量,用总重的一半去装,问能否装满.
#include <iostream>
#include <algorithm>
#include <stdlib.h>
#include <time.h>
#include <cmath>
#include <cstdio>
#include <string>
#include <cstring>
#include <vector>
#include <queue>
#include <stack>
#include <set> #define c_false ios_base::sync_with_stdio(false); cin.tie(0)
#define INF 0x3f3f3f3f
#define INFL 0x3f3f3f3f3f3f3f3f
#define zero_(x,y) memset(x , y , sizeof(x))
#define zero(x) memset(x , 0 , sizeof(x))
#define MAX(x) memset(x , 0x3f ,sizeof(x))
#define swa(x,y) {LL s;s=x;x=y;y=s;}
using namespace std ;
#define N 20005 const double PI = acos(-1.0);
typedef long long LL ;
int dp[*N];
int i = ;
int W,a[];
void ZeroOnePack(int siz, int prise){
for(int i = W;i>=siz;i--)
dp[i] = max(dp[i], dp[i-siz] + prise);
} void CompletePack(int siz, int prise){
for(int i = siz; i<= W; i++)
dp[i] = max(dp[i], dp[i-siz]+prise);
} void MultiplePack(int siz, int prise, int num){
if(siz*num >= W){
CompletePack(siz,prise);
return ;
}
int k = ;
while(k<num){
ZeroOnePack(k*siz, k*prise);
num-=k;
k*=;
}
ZeroOnePack(num*siz, num*prise);
} bool cal(){
if(W% == ) W/=;
else return false;
for(int i = ; i <= ; i++ ){
MultiplePack(i,i,a[i]);
}
if(dp[W] == W)
return true;
else
return false;
} int main(void){
//freopen("in.txt","r",stdin);
while(cin>>a[]>>a[]>>a[]>>a[]>>a[]>>a[]){
zero(dp);
W = ;
for(int j = ;j <= ;j++){
W+=j*a[j];
}
if(a[]== &&a[] == &&a[] == && a[] == && a[] ==&& a[] ==)
break;
printf("Collection #%d:\n",++i);
if(cal())
puts("Can be divided.\n");
else
puts("Can't be divided.\n");
}
return ;
}
多重背包 (poj 1014)的更多相关文章
- POJ 1014 Dividing(多重背包+二进制优化)
http://poj.org/problem?id=1014 题意:6个物品,每个物品都有其价值和数量,判断是否能价值平分. 思路: 多重背包.利用二进制来转化成0-1背包求解. #include&l ...
- POJ 1014 Dividing(多重背包)
Dividing Description Marsha and Bill own a collection of marbles. They want to split the collectio ...
- Hdu 1059 Dividing & Zoj 1149 & poj 1014 Dividing(多重背包)
多重背包模板- #include <stdio.h> #include <string.h> int a[7]; int f[100005]; int v, k; void Z ...
- poj 1014多重背包
题意:给出价值为1,2,3,4,5,6的6种物品数量,问是否能将物品分成两份,使两份的总价值相等. 思路:求出总价值除二,做多重背包,需要二进制优化. 代码: #include<iostream ...
- Dividing POJ - 1014 多重背包二进制优化
多重背包模型 写的时候漏了一个等号找了半天 i<<=1 !!!!!! #include<iostream> #include<cstdio> #include&l ...
- (混合背包 多重背包+完全背包)The Fewest Coins (poj 3260)
http://poj.org/problem?id=3260 Description Farmer John has gone to town to buy some farm supplies. ...
- (多重背包+记录路径)Charlie's Change (poj 1787)
http://poj.org/problem?id=1787 描述 Charlie is a driver of Advanced Cargo Movement, Ltd. Charlie dri ...
- poj 1742 Coins (多重背包)
http://poj.org/problem?id=1742 n个硬币,面值分别是A1...An,对应的数量分别是C1....Cn.用这些硬币组合起来能得到多少种面值不超过m的方案. 多重背包,不过这 ...
- POJ 2392 Space Elevator(贪心+多重背包)
POJ 2392 Space Elevator(贪心+多重背包) http://poj.org/problem?id=2392 题意: 题意:给定n种积木.每种积木都有一个高度h[i],一个数量num ...
- 【转载】poj 1276 Cash Machine 【凑钱数的问题】【枚举思路 或者 多重背包解决】
转载地址:http://m.blog.csdn.net/blog/u010489766/9229011 题目链接:http://poj.org/problem?id=1276 题意:机器里面共有n种面 ...
随机推荐
- MYSQL C API : CLIENT_MULTI_STATEMENTS 选项
#include <iostream> #include <mysql.h> #include <string> #include <assert.h> ...
- NGUI之UILabel
重要属性说明 overflow: Shrink Content: 意味着内容会自动被缩小以便适应区域.它在你使用动态字体的同时使用Keep Crisp设置时有效,让字体变小,而不是缩放内容. ...
- MyBatis学习总结(五)——实现关联表查询
一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...
- 用EXcel制作不同背景的图
Excel 绘图区分区设置不同背景色 之 条形图 样图 在Excel图表中,如对绘图区设置背景色,一般只能对整个绘图区设置同一种颜色.图案或图片为背景.但有时希望能对不同的分区设置不同的颜色作为背景, ...
- how to monitor system logs and export to files simultaneously
What will you do when you conduct a malware analysis on a smartphone? You will focus on running proc ...
- XidianOJ 1096 数的拆分
题目描述 输入自然数n,然后将其拆分成由若干数相加的形式,参与加法运算的数可以重复. 输入 多组数据.每组只有一个整数n,表示待拆分的自然数n. n<=80 输出 每组一个数,即所有方案数. - ...
- Mybatis按SQL查询字段的顺序返回查询结果
在SpringMVC+Mybatis的开发过程中,可以通过指定resultType="hashmap"来获得查询结果,但其输出是没有顺序的.如果要按照SQL查询字段的顺序返回查询结 ...
- mysql事件定时
DELIMITER $$ MONTH STARTS '2013-01-07 11:20:00' ON COMPLETION PRESERVE ENABLE DO BEGIN CALL ps(); EN ...
- 2016 ICPC北京站现场赛总结(再度流水账)
其他的都先不说,北大的未名湖真的美! 虽然感觉北大其他地方都有些破旧之感,但是未名湖附近真的值得称赞. 在去北京之前就听说北京温度很低,不过是干冷,果不其然.北京不冷,就是嘴唇太干了,不喝水真的受不了 ...
- 循序渐进Python3(二) -- 数据类型
数据类型 一.数字(int) Python可以处理任意大小的正负整数,但是实际中跟我们计算机的内存有关,在32位机器上,整数的位数为32位,取值范围为 -2**31-2**31-1,在64位系统上,整 ...