DP
文章平均质量分 75
AC_alvin
这个作者很懒,什么都没留下…
展开
-
关于背包问题的二进制优化
今天碰到一道题,HDOJ 1059,因此便去学习了一下二进制的优化。为什么是二进制优化而不是三进制四进制优化呢?因为二进制中只包含0 1两个数,恰好可以代替背包状态中的放与不放。换句话说,是当该类物体被拆分了之后,可以表示可表示的所有的数,具体证明便不提了。对于多重背包,自然没什么好说的,是二进制优化的基础。而对于完全背包(即物品的个数有无限个),我们不妨将其看做v/c[i]件的多重背包,因为v/原创 2014-06-24 15:06:59 · 1334 阅读 · 0 评论 -
HDOJ 1078
标准的DAG上的DP,其实之前一直不大想得明白为什么dp[i][j]为什么一定是在(i,j)状态上的局部最优解了呢? 其实仔细想想和我一般所做的DP是一个道理,因为运用dfs的方法,因此可以确定的是,得到了dp[i][j]的值并且已经退出了(i,j)这个状态,就可以认为已经将(i,j)所有的后继的状态的最优解已经计算出了。而记忆化搜索就是可以看作剪枝的手段。其实这么一想貌似还没什么问题了。 个原创 2014-06-24 15:07:09 · 412 阅读 · 0 评论 -
codeforces#253 div.2 PD
感觉我这种DP方法挺有意思的(一看就是菜鸟的思路),原创 2014-06-22 16:50:55 · 478 阅读 · 0 评论 -
HDOJ 2955
这道背包题和我们常见的背包题有所不同。如果根据以前做背包的惯性思维和题中数据的迷惑,会把概率乘以100来当作容量。但是经测试是不行的。 我们不妨换种思路,看做DAG上的DP思想。将所有有可能达到的钱的最大“逃跑”概率算出来,最后再将能够达到的最大的钱输出。而能不能够达到这个可以将所有除0以外的值初始化为0.意为逃跑的概率为0。 #include#include#includeusing nam原创 2014-06-24 15:07:05 · 382 阅读 · 0 评论 -
【ZOJ】3812 We Need Medicine
这道题就题意来说其实就是一道简单的记录路径的0,1背包,告诉你n个物品,每种物品只能取一次,再有q个询问,问你是否能在满足选出物品的w之和为m的情况下,满足t之和为s的情况,若可以则任意输出一种方案。 因此我们可以设计状态,dp[i][j][k]为前i个物品选出部分,当t之和为j时,w之和为k的情况能否满足,若存在方案则为1,不存在则为0。而状态的转移方程也是很简单。 dp[i][j+t[i]原创 2014-09-11 18:26:45 · 764 阅读 · 0 评论 -
HDU 3449 依赖背包
这道题虽然水水的,但是还是成功地给我增加了10多个WA。 最开始拿着题,一看,依赖背包嘛~直接DFS树形DP嗨起来,甚至连内存都没有算一下,3MLE; 然后又仔细看了一下题,没有必要用树形背包来做嘛,对每个背包01,就可以得到每个背包的泛化物品。结果又没有注意 把它们泛化物品的和写成了完全背包(囧),WA个无限。 做了很久才找到根源,结果又TLE了(再囧)。 后来又想了想,其实在之前求0原创 2014-06-24 15:07:17 · 517 阅读 · 2 评论 -
【HDU 5445】Food Problem(DP)
题意:给你n种食物,m种车,每种食物有三种属性能量值t,体积u,数量v。每种车有三个属性值容量x,价格y,数量z。问题是在能够达到至少p能量的要求下,最小花费为多少,若大于50000则输出TAT。 分析:我们可以首先用0\1背包把在达到p能量的情况下的最小体积先搞出来,因为一个物品最大能量值 code: #include #include #include using namespace s原创 2015-09-15 14:14:56 · 561 阅读 · 0 评论 -
【HDU 5471】Count the Grid
题意:一个矩阵中可以任意填m个数。给你N个小矩阵并且告诉你此矩阵中的最大值v,求有多少种大矩阵满足所给条件。 分析:考虑到n很小,因此我们可以将所有不同的矩阵重叠的情况(最多2 ^ n种)的最大值和块数先处理出来。其中第i种的最大值为vi,块数为ci。 然后对于每一种重叠情况,我们有两种选择,其一是不取最大值,则方案数为(vi - 1) ^ ci。第二种是取最大值,则方案数为vi ^ ci -原创 2015-10-01 19:31:17 · 1124 阅读 · 0 评论