题目链接 Problem Description FJ is going to do some shopping, and before that, he needs some boxes to carry the different kinds of stuff he is going to buy. Each box is assigned to carry some specific kinds of stuff (that is to say, if he is going to buy…
题目: 链接:pid=3449">点击打开链接 题意: 思路: dp[i][j]表示前i个箱子装j钱的材料可以得到的最大价值. 代码: #include<iostream> #include<cstdio> #include<cstring> using namespace std; #define MAXN 100010 int dp[55][MAXN]; int main() { //freopen("input.txt",&qu…
这是一道依赖背包问题.背包问题通常的解法都是由0/1背包拓展过来的,这道也不例外.我最初想到的做法是,由于有依赖关系,先对附件做个DP,得到1-w的附件背包结果f[i]表示i花费得到的最大收益,然后把每个f[i]看成花费为i+c[i],收益为f[i]的物品依次做0/1背包.显然,问题是物品数目过多,复杂度为w*w,无法承受.同时,此问题的主件收益为0这一点也需要细加考虑,由于主件收益为0,其实际上对每个附件方案的影响只有花费+c[i],这样考虑下来我们只需要对附件进行DP,然后附加上+c[i]的…
HDU 1561.这道是树形DP了,所谓依赖背包,就是选A前必须选B,这样的问题.1561很明显是这样的题了.把0点当成ROOT就好,然后选子节点前必须先选根,所以初始化数组每一行为该根点的值.由于多选了0点,所以记得把m++. #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int MAXN=22…
依赖背包 事实上,这是一种树形DP,其特点是每个父节点都需要对它的各个儿子的属性进行一次DP以求得自己的相关属性. fj打算去买一些东西,在那之前,他需要一些盒子去装他打算要买的不同的物品.每一个盒子有特定要装的东西(就是说如果他要买这些东西里的一个,他不得不先买一个盒子).每一种物品都有自己的价值,现在FJ只有W元去购物,他打算用这些钱买价值最高的东西. Problem Description FJ is going to do some shopping, and before that,…
这道题虽然水水的,但是还是成功地给我增加了10多个WA. 最开始拿着题,一看,依赖背包嘛~直接DFS树形DP嗨起来,甚至连内存都没有算一下,3MLE: 然后又仔细看了一下题,没有必要用树形背包来做嘛,对每个背包01,就可以得到每个背包的泛化物品.结果又没有注意 把它们泛化物品的和写成了完全背包(囧),WA个无限. 做了很久才找到根源,结果又TLE了(再囧). 后来又想了想,其实在之前求01背包的时候,就和后面的泛化物品求和有许多重复的计算,因为单纯地泛化物品的和其实效率挺低的(n^2) 可以知道…
The Ghost Blows Light Problem Description My name is Hu Bayi, robing an ancient tomb in Tibet. The tomb consists of N rooms (numbered from 1 to N) which are connected by some roads (pass each road should cost some time). There is exactly one route be…
题目: 链接:点击打开链接 题意: 非常明显的依赖背包. 思路: dp[i][j]表示以i为根结点时攻击j个城堡得到的最大值.(以i为根的子树选择j个点所能达到的最优值) dp[root][j] = max(dp[root][j],dp[root][k]+dp[u][j-k]); u递归根结点,root当前根结点,每一个城堡之间的依赖关系形成森林.应该转化为树.再树形dp.仅仅需添加一个根结点即可.m++. 代码: #include<iostream> #include<cstdio&g…
题意:给定带点权的树,问多少个连通块,其乘积<=M; N<=2000,M<1e6; 思路:连通块-->分治: 由于普通的树DP在合并的时候复杂度会高一个M,所以用依赖背包来做. (当然,由于体积分布是离散的,可能有些选手用map也可以过,这样避免了每次都for(i,1,M),取决于数据吧). 那么现在的复杂度就是O(NlogN*M) ,空间为O(N*M),尚待优化. 这里非常巧妙的把<sqrt(M)的和大于sqrt(M)的分开保存,那么前者就是正常的背包,表示背包里存了多少东…
HDU 1712 ACboy needs your help(包背包) pid=1712">http://acm.hdu.edu.cn/showproblem.php? pid=1712 题意: 小杰有m天的时间去上n门不同的课. 对于第i门课来说, 假设小杰花j天的时间在该课上, 那么小杰能够获得val[i][j]的价值. 如今给出矩阵val[n][m], 要你求出小杰能获得的最大价值和? 分析: 咋一看, n门课, m天的时间, 要我们求最大价值. 那么明显是从n门课中选出合适的几门,…