动态规划dp
文章平均质量分 71
发布一些好的解题思路,以及个人想法
endlessdream01
这个作者很懒,什么都没留下…
展开
-
动态规划dp 登山
题目描述五一到了,ACM队组织大家去登山观光,队员们发现山上一个有N个景点,并且决定按照顺序来浏览这些景点,即每次所浏览景点的编号都要大于前一个浏览景点的编号。同时队员们还有另一个登山习惯,就是不连续浏览海拔相同的两个景点,并且一旦开始下山,就不再向上走了。队员们希望在满足上面条件的同时,尽可能多的浏览景点,你能帮他们找出最多可能浏览的景点数么?输入格式第一行包含整数N,表示景点数量。第二行包含N个整数,表示每个景点的海拔。输出格式输出一个整数,表示最多能浏览的景点数。数据范围。原创 2023-11-15 18:00:00 · 33 阅读 · 0 评论 -
树形dp——换根dp
通过观察,我们发现,右边的深度减少了,左边的增加了,减少的节点为未换根之前以0为根节点经过2的所有路径上的节点,增加的为没有经过2的。我们假设某个节点为根,将无根树化为有根树,在搜索dfs统计子树的深度和,则可以用一次搜索算出以该节点为根时的深度和,其时间复杂度为。就表示为上升的深度,不经过child的子节点树都增加,不经过的节点数目就是从节点数目减去经过的节点数目。如图,我们的根节点就是0,接下来我们选取子节点2作为新的根节点,对其进行换根。但这样求解出的答案只是以该节点为根的,并不是最优解。原创 2023-11-23 22:22:54 · 309 阅读 · 0 评论 -
动态规划-树形dp
众所周知,树是一个有 n 个节点,n−1 条无向边的图。这种图可以表示一些事物之间的关系,且这种关系是联通的、无环的。当动态规划建立在一种依赖关系(或者其它互相的关系)之上,树形 dp 便是解决这类问题的好帮手。通常对于树上的每一个节点,我们要求的 dp 的值通过其父亲节点/儿子节点推算过来。对于特殊的节点(根节点、叶子节点),有时需要初始化。由于树是一种无向边的图,于是我们在建树的时候需要建立双向的,例如,即如果 u 与 v 相连,我们需要建立 u→v 以及 v→u。原创 2023-11-22 21:39:17 · 96 阅读 · 0 评论 -
状态压缩dp的一些例题
【代码】状态压缩dp的题目原创 2023-11-07 08:44:18 · 30 阅读 · 0 评论 -
动态规划数位dp
【代码】动态规划数位dp。原创 2023-11-07 15:47:46 · 83 阅读 · 2 评论 -
dp动态规划 方格取数
为了让整体的值更大,所以我们得小心地选,尽量避免影响第二条路径受到影响,使用这里我们需要考虑两条路一起选择。这道题要我们求的是走了两次的路径之和的最大值,我们首先可能会想到用两次dp来做,第一次选择最大的,然后把最大路径上的数字都置为空,第二次再选择最大的,然后相加就是题目最优解。来表示坐标上的值,然后对于两条路径同时走,就可能会出现重合的这种状态,但是对于如上问题,每个点上的值只能取一次。但是用四维来表示是状态是不是有点大,于是我们考虑一下优化,因为每次只能向右或者向下走一步,所以每次。原创 2023-11-14 17:27:55 · 63 阅读 · 3 评论 -
动态规划区间dp问题
表示右边区间,根据1024的规则,当左边的值和右边的值相等的时候我们才可以进行转移,根据题意,转移之后是要加1,并不是翻倍,题目要求我们可以将两个相邻的相同的数合并,每次合并得到的数是原来的数+1,求最后能得到的最大分值。表示从左端点l到右端点r其中合并能获得的最大分值,每次合并后+1。实际上也 应该是0,但是这里会导更新成1,导致更新错误。我们来思考一下这个状态转移方程,我们只需要在。当然本体还得考虑一下特殊情况如果。后续会继续更新,敬请期待。内枚举一个断点k,所以。所以本题的转移方程就是。原创 2023-11-03 10:49:04 · 61 阅读 · 0 评论 -
完全背包问题
有一个背包容量为n,有质量为a,b,c三种质量的物体,求装满并且数量最大,即每件物体的价值为1。在第二个例子中,Polycarpus 可以这样剪彩带:第一段长度为 5,第二段长度为 2。在第一个例子中,波利卡普斯可以这样剪彩:第一段长度为 2,第二段长度为 3。≤ 4000) - 原始色带的长度和切割后色带片的可接受长度。打印一个数字--可能的最大丝带片数。保证至少存在一个正确的剪彩。请帮助波利卡普斯找出剪切后的丝带片数。第一行包含四个空格分隔的整数。波利卡普有一条丝带,长度为。原创 2023-11-02 20:43:19 · 59 阅读 · 0 评论