多重背包,本题不需要二分优化。相对简单点。因为重复数十分小,小于10;
而增加一个限制每种材料的高度做法,如果使用逆向填表,那么只需要从这个高度往小递归填表就可以了。
还有就是注意要排序,以限制高度为标准从小到大排序,否则答案错误的。
#include
#include
#include
using std::sort;
const int MAX_K = 401;
const in...
分类:
其他好文 时间:
2014-07-01 16:08:42
阅读次数:
213
这道题使用多重背包,不过其实我也不太明白为什么叫这个名字。
因为感觉不是什么多重,而是物体的分解问题。
就是比如一个物体有数量限制,比如是13,那么就需要把这个物体分解为1, 2, 4, 6
如果这个物体有数量为25,那么就分解为1, 2, 4, 8, 10
看出规律吗,就是分成2的倍数加上位数,比如6 = 13 - 1 - 2 - 4, 10 = 25 - 1 - 2 - 4 - 8,呵...
分类:
其他好文 时间:
2014-06-30 10:24:29
阅读次数:
188
【问题描述】 有N种物品和一个容量为w的背包,第i种物品最多有m[i]件可用,每件容量是c[i],价值是v[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。【输入】 第一行 正整数n和w 以下n行,每行三个正整数为物品的容量、价值和件数,中间用空格隔开。【输出】最大...
分类:
其他好文 时间:
2014-06-28 10:57:02
阅读次数:
249
#include
#include
#include
#include
#include
#include
#include
#include
#define inf 0x3f3f3f3f
#define ll __int64
using namespace std;
int n,m,dp[100010],a[100010],c[1010];
void pack01(int c...
分类:
其他好文 时间:
2014-06-27 08:07:53
阅读次数:
157
问题: 有N种物品和一个容量为V的背包。第i种物品最多有n[i]件可用,每件费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。基本算法: 这题目和全然背包问题非常类似。主要的方程仅仅需将全然背包问题的方程稍微一改就可以,由于对于第i种物品有n...
分类:
其他好文 时间:
2014-06-25 22:02:02
阅读次数:
234
题意:裸的多重背包,水题。
解法:和完全背包一样,只不过加一个数组,记录着每个物品用过的次数,多于存储量时就pass不更新。
还有一种方法是将每个物品用二进制压缩处理,第一个代码比较简单;
代码:/******************************************************
* author:xiefubao
*******...
分类:
其他好文 时间:
2014-06-15 09:14:06
阅读次数:
223
1 //zoj1366类似背包的问题 2 //争取一遍AC 3 #include 4 #include
5 #include 6 #define maxn 13 7 using namespace std; 8 9 int k[maxn];10 int
n1[maxn];11 ...
分类:
其他好文 时间:
2014-06-06 13:05:58
阅读次数:
250
多重背包问题问题:有N种物品和一个容量为V的背包。第i种物品最多有n[i]件可用,每件费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。分析:这题目和完全背包问题很类似。基本的方程只需将完全背包问题的方程略微一改即可,因为对于第i种物品有n[...
分类:
编程语言 时间:
2014-05-22 14:55:03
阅读次数:
332