![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
背包
ACder_chen
将AC进行到底
展开
-
poj1742 coin 多重背包
#include #include #include #include using namespace std; #define maxn 105 #define maxm 100005 bool f[maxm]; int used[maxm], num[maxn], value[maxn]; int n, m; void input() {转载 2014-01-26 13:09:33 · 690 阅读 · 0 评论 -
hdu 4501多维背包入门
#include #include #include using namespace std; /* 本题属于多维背包,即有多种支付手段去买物品, 求用这些方式能买到的最大价值。 如本题可以用积分, 钱 , 免费拿去,三种方式得到物品, 求得到物品的最大价值。 这就是多维背包, 可以用dp[i][j][k] i表示用积分支付, j表示用钱支付。 k表示可以 免费领取这件物品。 */ st原创 2014-06-04 20:53:34 · 805 阅读 · 0 评论 -
hdu1561树形背包
#include #include #include #include using namespace std; vectorque[210]; int dp[210][210]; //dp[i][j] 表示从以i为根的树中选取j个取得的最大利益。 int value[210]; int n, m; void dfs(int x) { dp[x][1] = value[x转载 2014-06-03 20:24:44 · 648 阅读 · 0 评论 -
hdu 2159 FATE 二维背包
/* 很明显是二维背包问题, 最近做了一些背包题目,对于背包有所了解, 对于二维背包,如果给给出k种物品必须要选m种, 物品的第i种的选取,必须由i-1种来决定, 让物品前后有依赖关系, 才能保证,成功选取m种物品; 对于不要去选取件数的二维背包就简单了。 */ #include #include #include using namespace std; int n, m, k,转载 2014-03-08 16:32:49 · 741 阅读 · 1 评论 -
hdu2660 Accepted Necklace 二维背包
#include #include #include using namespace std; /* 物品总个数的限制 有时,“二维费用”的条件是以这样一种隐含的方式给出的: 最多只能取M件物品。这事实上相当于每件物品多了一种“件数”的费用, 每个物品的件数费用均为1, 可以付出的最大件数费用为M。 换句话说,设f[v][m]表示付出费用v、最多选m件时可得到的最原创 2014-03-07 21:06:13 · 674 阅读 · 0 评论 -
3496 Watch The Movie 二维背包
自己写的 #include #include #include using namespace std; int dp[1005][1005]; int n, t, m, l; int w[105], v[105]; int main() { scanf("%d", &t); while(t--) { scanf("%d%d%d", &n, &m, &原创 2014-03-07 21:42:20 · 603 阅读 · 0 评论 -
1059 Dividing 背包
#include #include #include using namespace std; /* 本题是对背包知识的复习题, 综合应用了, 背包前三讲的内容; 对于复习很有帮助。 */ struct node { int v; int m; }s[10]; int temp; int dp[200005]; void completePake(int v) {转载 2014-03-08 20:45:53 · 774 阅读 · 2 评论 -
hdu 2639Bone Collector II 01背包第k大问题
#include #include #include #include using namespace std; int n; int N, V, K; int dp[1005][105]; int v[105], w[105]; int sum[305]; int main() { scanf("%d", &n); while(n--){ scanf原创 2014-03-06 18:53:14 · 588 阅读 · 0 评论 -
hdu3591The trouble of Xiaoqian(多重背包)
#include #include #include #include using namespace std; int dp[25000]; //dp[i] 表示组成i元钱用的钱的最少张数;(用多重背包求得); int dp1[25000]; //dp1[i] 表示组成i元钱用的最少钱数 (用的是找回的钱组成 用完全背包求得); int c[105], v[105]; int n,原创 2014-03-10 20:49:21 · 654 阅读 · 0 评论 -
hdu 1712ACboy needs your help 01背包(分组)
#include #include #include using namespace std; /* 本题的难点是, 物品和价值不易分离, 需要外加一层循环处理天数和价值间的关系; */ int main() { int dp[105]; int value[105][105]; int n, m; while(scanf("%d%d", &n, &m)转载 2014-03-06 19:35:23 · 602 阅读 · 0 评论 -
hdu3033分组背包
#include #include #include #include using namespace std; struct node { int num; int value; int money; }s[105]; int dp[15][10005]; int n, v, m; int main() { while(scanf("%d%d%d",转载 2014-06-04 19:25:03 · 608 阅读 · 0 评论