随笔分类 - 动态规划
刘汝佳uva动态规划专题
摘要:题意:
有很多个箱子,想买箱子中的物品必须先买下箱子
思路:
依赖背包,实际的操作过程中依然需要注意几个点:01背包的时候,背包容量是由max-p到ci,而非max到p+ci。
至于为什么,因为后一种则就是表示每个物品代价是p+ci,而非ci了,所以此时就会计算错误
阅读全文
摘要:题意:
一棵树,每个节点有一个权值,求从根节点出发,最多走K步,能够取得的最大权值(可以往回走)。
思路:
dp[0][u][j] 从u节点出发,最多走j步(可以小于j步),可以获得的最大权值。
dp[1][u][j] 从u节点出发,最多走j步,最终停留在u的子树节点,可以获得的最大权值。
阅读全文
摘要:思路:
看完背包9讲,感觉这一题还是不难理解的。首先,对于没有组的限制的X类物品,进行一遍背包(01背包、完全背包、多重背包)。
其次,对于有组的限制的物品,就需要再次考虑下了。这次要用到泛化背包和分组背包的思想。每一组只能选择组里面的一类物品。
于是试图考虑,如果我分给这个组V(range from 0 to D)的容量,能够最多拿到多少价值。因为这个组有X类物品,只能选择一类,
所以需要先对这个组的每一类物品进行一次01背包,获得分配给这类物品V的容量取得的最大价值,然后再对这个组的X类物品进行分组背包。
最后,针对上述组进行一次分组背包,问题得以解决。
阅读全文
摘要:给你一个数N(1=N=1000),求这么N有多少个不同的旋转长度。旋转长度是指,一个数最少经过多少步可以回到原来的数。例如N=6时,假如123、45、6分别为三个旋转周期,则旋转顺序为:123456,312546, 231456, 123546, 312456, 231546,123456,旋转长度为6。当然你也可以12,34,56旋转周期,旋转长度为2。
阅读全文
摘要:就题目来说还是属于比较常规的分组DP,处理点与点之间的关系稍微麻烦点,借鉴了网上结构体重载的方法
阅读全文
摘要:和普通的分组DP还是有点差别的,要求背包容量固定的变化,而非1->V之类的
现在渐渐理解分组背包,1. 每组最多选择一个 2. 每组选择一个 ,这两类的差别就是在与dp数组的初始化问题
阅读全文
摘要:HDOJ 3496 基本二维背包
阅读全文
摘要:此题很好,很费脑力,还好以前把背包9讲看完了,这次容易理解点
阅读全文

浙公网安备 33010602011771号