区间dp
文章平均质量分 88
Brightess
毕业于湖南城市学院
目前在某游戏大厂搬砖(
展开
-
CF 607B - Zuma(区间 dp 记忆化搜索写法)
记搜大法好原创 2023-04-19 15:28:19 · 416 阅读 · 0 评论 -
2022牛客寒假1 炸鸡块君与FIFA22(做法一:倍增 st表)
思路:这是一道关于 倍增(倍增算法讲解) 的一道典型例题。我们注意到 起始分数若在 % 3 意义下相等,则 经历 [l, r] 一段后分数的变化量是一个定值(重要)定义 st[3][200010][21] 之中 st[k][i][j] 表示 在初始分数为 k 的情况下 经历了 [i, i + 2 ^ j - 1] 一段游戏后 分数的 变化量;假设我们 已经预处理出了 st,则对于 每一次询问 ask,可以 先将某初始分数 start 对 3 取模,然后按照 倍增的套路 从 l 跳 若干个 2...原创 2022-04-26 12:20:37 · 792 阅读 · 0 评论 -
倍增算法讲解 + 例题:AcWing 1273. 天才的记忆(RMQ问题的ST算法)
倍增,意思就是 “成倍增长”。在进行 递推 时,如果 状态空间很大,通常的 线性递推 无法满足 时间 与 空间复杂度 的要求,那么我们可以通过 成倍增长 的方式,只递推 状态空间 中在 2 的整数次幂位置上的值 作为代表。当需要 其他位置上 的值时,我们通过 “任意整数可以表示成若干个 2 的次幂项的和” 这一性质,使用 之前求出的代表值 拼成 所需的值。所以使用 倍增算法 的一个基本要求:递推问题 的状态空间 关于 2 的次幂 具有 可划分性。“倍增” 与 “二进制划分” 两个思想 互相结合,降低原创 2022-04-25 21:55:57 · 2653 阅读 · 0 评论 -
AcWing 321. 棋盘分割(记忆化搜索 二维区间DP 二维前缀和)
题意:给定一个 8×8 的棋盘,棋盘的 每个小方格 都有一个 权值 wx,y每次我们可以对棋盘进行一次 横切 或 竖切,将 棋盘 分成两块矩形的 子棋盘分割完一次后,我们可以 选择两个 子棋盘 中的一个 再继续 递归 操作可以发现题目中给的这个图片,右边这个并不是递归下去做的:他对第一次分割的两个矩形又分别进行了分割(题目要求我们只能保留一个继续分割)现需要把棋盘按照上述分割方案,分成 n 块(n−1 次划分操作)求一个划分方案,使得各个子棋盘的 总分的均方差最小思路:本题如果用...原创 2022-04-12 22:21:14 · 313 阅读 · 1 评论 -
AcWing 479. 加分二叉树(区间dp记录方案 二叉树前、中序遍历)
题意:给定二叉树的中序遍历:1、2、3、…、n,我们知道会有不同的形态,题目要求我们求出 所有形态中分值最大的方案(输出其对应的前序遍历)思路:我们知道,一棵子树 的 中序遍历 在 整棵树的中序遍历序列中 一定是 连续的一段dp[l, r] 状态表示集合:当前 以 l 为左端点,r 为右端点的区间 作为 中序遍历,生成树的方案属性:所有方案中的最大分数dp[l, r] 状态表示(集合划分的依据:根据根节点在区间[L,R]的不同位置进行划分)我们假设根节点在区间[L,R]中的第k个点,那...原创 2022-04-11 21:09:37 · 709 阅读 · 0 评论 -
AcWing 1069. 凸多边形的划分(区间dp 高精度加法 乘法)
题意:给定 n 个点的 凸多边形 中每个 顶点 的 权值 wi我们可以把该 凸多边形 划分成 n - 2 个 三角形(三角形不能相交,这样就能保证是 n−2 了)每次划分三角形的 费用 为 三个顶点权值 的 乘积求一个划分 方案,使得方案的 费用总和 最小思路:(本题的分析思路与上一题不同,但是推导出的状态转移方程两者一致)本题是一个给定的 凸多边形 求 三角剖分 的最小费用方案很显然一个 凸多边形的剖分方案 并不唯一:在 选定 多边形中 两个点 后,找出 三角形 的 第三个点 的方案有..转载 2022-04-11 14:40:19 · 231 阅读 · 0 评论 -
AcWing 320. 能量项链(区间dp)
题意:给定 N 个能量石,每个能量石有一个二元属性 (wi,1,wi,2)其中 wi,1 表示第 i 个能量石和第 i−1 个能量石融合产生的 能量 的其中一个参数当然 wi,2 表示第 i 个能量石和第 i+1 个能量石融合产生的 能量 的其中一个参数魔法石是顺序且环形摆放的,每次可以融合相邻两个魔法石融合两个能量石 i,i+1 所产生的能量为(题目保证,相邻能量石的参数一致,首尾一致)Ei,i+1=wi,1×(wi,2或wi+1,1)×wi+1,1Ei,i+1 = wi,1 × (wi...转载 2022-04-11 09:49:48 · 174 阅读 · 0 评论 -
AcWing 1068. 环形石子合并(区间dp)
题意:给定 n 个石子的 分数 wi,且石子是 环形放置 的(即:在给定的顺序上,同时满足 1 和 n 也是相邻的)规定每次只能合并 相邻 的两堆石子,形成一个新的石子堆,合并的 费用 是两个石子堆的 分数之和求解两个方案:方案一:把这 n 堆石子合并为一堆,且满足费用最大的方案方案二:把这 n 堆石子合并为一堆,且满足费用最小的方案思路:本题是限制只能合并 相邻两堆石子的模型,是区间dp模板题:AcWing 282. 石子合并 的环形扩展问题。考虑如何设定 动态规划 的..转载 2022-04-10 21:18:41 · 261 阅读 · 0 评论 -
区间dp:AcWing 282. 石子合并
区间dp到目前为止,我们介绍的 线性DP一般 从初态开始,沿着阶段的扩张向某个方向递推,直至计算出目标状态。区间DP也属于 线性DP中的一种,它以“区间长度”作为DP的“阶段”,使用两个坐标(区间的左、右端点)描述每个维度。在 区间DP 中,一个状态由若干个比它更小且包含于它的区间所代表的状态转移而来,因此 区间DP的决策往往就是划分区间的方法。区间DP 的 初态一般由长度为1的“元区间”构成。这种 向下划分、再向上递推 的模式与某些树形结构,例如 线段树,有很大的相似之处。把 区间DP作为线性DP原创 2022-03-16 12:52:33 · 527 阅读 · 0 评论