【多重背包模板】poj 1014
#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的更多相关文章
- 多重背包 (poj 1014)
题目:Dividing 题意:6种重量的的石头,每个给定数量,用总重的一半去装,问能否装满. #include <iostream> #include <algorithm> ...
- HDU 2191 珍惜现在,感恩生活(多重背包模板题)
多重背包模板题 #include<iostream> #include<cstring> #include<algorithm> using namespace s ...
- hdu2844Coins(多重背包模板)
Coins Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- 【多重背包】 poj 2392
转自:http://blog.csdn.net/wangjian8006 题目大意:有一头奶牛要上太空,他有很多种石头,每种石头的高度是hi,但是不能放到ai之上的高度,并且这种石头有ci个将这些石头 ...
- 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活--hdu2191(多重背包模板)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2191 标准的多重背包 题目 有N种物品和一个容量为V的背包.第i种物品最多有n[i]件可用,每件费用是 ...
- 解题报告:hdu2191汶川地震 - 多重背包模板
2017-09-03 17:01:36 writer:pprp 这是一道多重背包裸题 - 记得是从右向左进行,还有几点需要注意啊,都在代码中表示出来了 代码如下: /* @theme:hdu2191 ...
- [51nod]多重背包模板
https://www.51nod.com/tutorial/course.html#!courseId=11 题目大意: 有$N$种物品和一个容量为$W$的背包.第$i$种物品最多有$c[i]$件可 ...
- 多重背包模板 51Nod 1086
有N种物品,每种物品的数量为C1,C2......Cn.从中任选若干件放在容量为W的背包里,每种物品的体积为W1,W2......Wn(Wi为整数),与之相对应的价值为P1,P2......Pn(Pi ...
- 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 3070 矩阵快速幂解决fib问题
矩阵快速幂:http://www.cnblogs.com/atmacmer/p/5184736.html 题目链接 #include<iostream> #include<cstdi ...
- hdu2141AC代码分享
#include <iostream> #include <algorithm> using namespace std; const int N = 505; /////// ...
- photoshop的页面制作练习1
- window.showModalDialog()的简单用法
//创建一个显示html内容的模态对话框: vReturnValue = window.showModalDialog(sURL [, vArguments] [,sFeatures]) //创建一个 ...
- eclipse和tomcat整合之后每次发布server.xml被修改(转)
eclipse每次发布,server.xml和context.xml总是被还原 直接找到eclispse工程下的server工程,把里面的相应的server.xml和context.xml修改了即可, ...
- 配置pyqt5环境 for python3.4 on Linux Mint 17.1
1.安装QT 配置QT PATH 在 /etc/profile文件中追加 export QTDIR=/usr/local/Qt5.4.2/5.4/gcc_64 export LD_LIBRARY_PA ...
- php扩展memcache的安装
1.安装memcache服务器 Memcached作为开放.免费.高效的.分布式的内存缓存系统受到很多网站的欢迎. 官网下载memcached源代码安装包,稳定版即可 官网:http://memcac ...
- Python编码介绍——encode和decode
在 python 源代码文件中,如果你有用到非ASCII字符,则需要在文件头部进行字符编码的声明,声明如下: # code: UTF-8 因为python 只检查 #.coding 和编码字符串,所以 ...
- 面向对象的特性-利用prototype为类创建静态成员
—————————————————————————— <script type="text/javascript"> //用function模拟一 ...
- git 忽略已跟踪的文件
对于未跟踪的文件,可以编辑.gitignore文件进行忽略. 对于已跟踪的文件,编辑.gitignore文件不会起作用,它只针对未被跟踪的文件,也就是你先设置规则,然后添加的新文件符合这些规则的就会被 ...