随笔分类 -  DP--斜率优化DP

摘要:斜率优化小结 前言 一般来说,我们可以把斜率优化 \(dp\) 对应的可以解决的问题分成这几类: \(x\) 单调且 \(k\) 单调,\(x\) 不单调且 \(k\) 单调,\(x\) 单调且 \(k\) 不单调,\(x,k\) 都不单调。 我们可以只在第一种情况中使用单调队列直接维护做到线性复杂 阅读全文
posted @ 2021-09-24 11:30 __Anchor 阅读(67) 评论(0) 推荐(0)
摘要:题意 略。 分析 容易列出 \(dp\) 方程,然后因为我们子节点是由祖先节点转移,所以这样的情况我们可以考虑出栈序。 出栈序的性质就是对于一个节点来说,其祖先节点的出栈序都在这个节点的后面,于是我们可以考虑dfs序更新,那么所有这个点后面的数都只有它的祖宗才有值,于是就是维护后缀了。 这里维护区间 阅读全文
posted @ 2021-07-19 20:23 __Anchor 阅读(59) 评论(0) 推荐(0)
摘要:作用 李超树是拿来维护线段或者直线,支持动态插入线段/直线,和询问在某一单点的最大值线段。 其实就是维护了一个动态凸包。 实际上就是维护了一个“最优势线段”和“标记永久化”。 常常用来维护斜率优化 dp 。 实现 插入直线 首先是插入直线,查询单点的实现: 要记住的地方: \(1.\) \(Modi 阅读全文
posted @ 2021-04-19 16:32 __Anchor 阅读(82) 评论(0) 推荐(0)
摘要:P3648 [APIO2014]序列分割 首先,我们发现这个数据范围明显就是 \(O(nk)\) 的。 那么我们可以考虑直接 dp 了,设 \(dp[i][j]\) 为前 \(i\) 个数划分完毕,划分了 \(j\) 次,最后一次划分在 \(i\) 位置的最大贡献。 那么我们的柿子很明显就是 \(d 阅读全文
posted @ 2021-04-19 16:13 __Anchor 阅读(61) 评论(0) 推荐(0)
摘要:P3628 [APIO2010]特别行动队 首先发现这个是划分区间,可以考虑 dp。 然后这个区间求和很明显可以做一遍前缀和。 接下来很明显就是一个斜率优化dp了。 可以动态开点李超树,也可以单调队列优化。 代码: #include<bits/stdc++.h> using namespace st 阅读全文
posted @ 2021-04-19 15:54 __Anchor 阅读(71) 评论(0) 推荐(0)
摘要:P2900 [USACO08MAR]Land Acquisition G 斜率优化 dp 。 首先,我们可以发现这个题可以贪心:对于一个长度和宽度都小于等于另外一个地的地,我们可以直接划分到另外那一个去,直接把当前这个忽略即可。 然后我们可以发现这个求一个最大值可以直接写成一个 dp 。 设按$h$ 阅读全文
posted @ 2021-04-19 15:26 __Anchor 阅读(96) 评论(0) 推荐(0)