#include <iostream>
#include <stdio.h>
#include <cstring>
#define INF 100000000
using namespace std;
int f[]; //f[j]相当于f[i][j]: 考虑1...i个物品,恰好放到容量为j,所能达到的最大价值
int v; //背包容量
void complete_pack(int *dp, int c, int w)
{
for(int i = c; i <= v; i++)
dp[i] = max(dp[i], dp[i - c] + w);
}
void zeroone_pack(int *dp, int c, int w)
{
for(int i = v; i >= c; i--)
dp[i] = max(dp[i], dp[i - c] + w);
} void mutiple_pack(int *dp, int c, int w, int m)
{
if(c * m >= v)
{
complete_pack(dp, c, w);
return;
}
int k = ;
while(k < m)
{
zeroone_pack(dp, k * c, k * w);
m = m - k;
k = * k;
}
zeroone_pack(dp, c * m, w * m);
}
int main()
{
//freopen("in.txt","r",stdin);
int sum, i, c[], w[], m[],cas = ;
while(scanf("%d%d%d%d%d%d",&m[],&m[],&m[],&m[],&m[],&m[]))
{
if(m[]== && m[]== && m[]== && m[]== && m[]== && m[]==)
break;
sum = ;
for(i = ; i <= ; i++)
{
c[i] = w[i] = i;
sum += c[i] * m[i];
}
printf("Collection #%d:\n", ++cas);
if(sum & )
puts("Can't be divided.\n");
else
{
sum /= ;
v = sum;
for(i = ; i <= sum; i++)
f[i] = -INF;
f[] = ;
for(i = ; i <= ; i++)
mutiple_pack(f, c[i], w[i], m[i]);
if(f[v] < )
puts("Can't be divided.\n");
else
puts("Can be divided.\n");
}
}
return ;
}

【多重背包模板】poj 1014的更多相关文章

  1. 多重背包 (poj 1014)

    题目:Dividing 题意:6种重量的的石头,每个给定数量,用总重的一半去装,问能否装满. #include <iostream> #include <algorithm> ...

  2. HDU 2191 珍惜现在,感恩生活(多重背包模板题)

    多重背包模板题 #include<iostream> #include<cstring> #include<algorithm> using namespace s ...

  3. hdu2844Coins(多重背包模板)

    Coins Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  4. 【多重背包】 poj 2392

    转自:http://blog.csdn.net/wangjian8006 题目大意:有一头奶牛要上太空,他有很多种石头,每种石头的高度是hi,但是不能放到ai之上的高度,并且这种石头有ci个将这些石头 ...

  5. 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活--hdu2191(多重背包模板)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2191 标准的多重背包 题目 有N种物品和一个容量为V的背包.第i种物品最多有n[i]件可用,每件费用是 ...

  6. 解题报告:hdu2191汶川地震 - 多重背包模板

    2017-09-03 17:01:36 writer:pprp 这是一道多重背包裸题 - 记得是从右向左进行,还有几点需要注意啊,都在代码中表示出来了 代码如下: /* @theme:hdu2191 ...

  7. [51nod]多重背包模板

    https://www.51nod.com/tutorial/course.html#!courseId=11 题目大意: 有$N$种物品和一个容量为$W$的背包.第$i$种物品最多有$c[i]$件可 ...

  8. 多重背包模板 51Nod 1086

    有N种物品,每种物品的数量为C1,C2......Cn.从中任选若干件放在容量为W的背包里,每种物品的体积为W1,W2......Wn(Wi为整数),与之相对应的价值为P1,P2......Pn(Pi ...

  9. 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 ...

随机推荐

  1. HDU 2212 DFS

    Problem Description A DFS(digital factorial sum) number is found by summing the factorial of every d ...

  2. AuthenticationManager, ProviderManager 和 AuthenticationProvider

    AuthenticationManager是一个接口: public interface AuthenticationManager { Authentication authenticate(Aut ...

  3. page,request,session,application四个域对象的使用及区别

    转自:page,request,session,application四个域对象的使用及区别 1.page指当前页面.只在一个jsp页面里有效 .2.request 指从http请求到服务器处理结束, ...

  4. hdu_4417_Super Mario(主席树)

    题目链接:hdu_4417_Super Mario 题意: 给你n个树,有m个询问,每个询问有一个区间和一个k,问你这个区间内不大于k的数有多少个. 题解: 考虑用主席树的话就比较裸,当然也可以用其他 ...

  5. MongoDB聚合管道(Aggregation Pipeline)

    参考聚合管道简介 聚合管道 聚合管道是基于数据处理管道模型的数据聚合框架.文档进入一个拥有多阶段(multi-stage)的管道,并被管道转换成一个聚合结果.最基本的管道阶段提供了跟查询操作类似的过滤 ...

  6. 2、Web应用程序中的安全向量 -- CSRF/XSRF(跨站请求伪造)

    CSRF的概念可以分为两类:XSS和混淆代理. 混淆代理中的"代理"是指用户的浏览器.CSRF是基于浏览器的工作方式运作的.用户登录到一个站点后,用户的信息将会存储在cookie中 ...

  7. wep密钥的长度

    理论上,WEP可以搭配任意长度的密钥,因为RC4并未要求非得使用特定长度的密钥. 不过,大多数产品均支持一种或两种长度的密钥.唯一出现在标准中的密钥长度时64位的WEP种子(seed),其中40位是两 ...

  8. html5 让IE6,7支持HTML5语义化标签的文件

    https://github.com/aFarkas/html5shiv/blob/master/src/html5shiv.js   只要应用这个js就行了

  9. wpf ListBox 双击事件时在子项添加Style 确保选中

    <ListBox ItemTemplate="{StaticResource CardPictureTemplate}" VirtualizingPanel.CacheLen ...

  10. UIScrollView 加载多个view view还可以交换顺序(2)

    在上的代码中 UIview都在一个页面 要是每一个view对应一个页面 操作每一个view代码都在viewcontroller里面就会很乱,那么我们就将view重新做一下 创建想要的页面继承与view ...