随笔分类 -  数据结构--李超线段树

摘要:题意 略。 分析 容易列出 \(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)
摘要:P7480 Reboot from Blue(最短路,李超树优化dp) 首先,我们发现,直接建图跑最短路肯定不行,因为这样做会有 \(O(n^2)\) 条边。 那么我们可以考虑减少无用的边。 有这样一个性质:对于一个点,我们发现它只会取到离它左最近或者右最近的比当前点油费小的点。 这是为什么呢?因为 阅读全文
posted @ 2021-04-16 16:10 __Anchor 阅读(91) 评论(0) 推荐(0)