随笔分类 -  数据结构——线段树的扩展(李超线段树/吉司机线段树/线段树合并/可持久化线段树合并)

摘要:III.IV.[HDU3842][WF2011]Machine Works 我们设 fi 表示第 i 台机器被购买时,所剩最多钱数。则 fi=maxdj<di{fj+(didj1)gj+rjpi} 其可被拆作 阅读全文
posted @ 2021-04-06 10:37 Troverld 阅读(71) 评论(0) 推荐(0) 编辑
摘要:III.III.CF932F Escape Through Leaf 明显DP式很容易写出;然后观察发现其就是子树中一堆函数 y=kx+b 中对于某个 xy 的最小值,于是线段树合并李超树就OK了。 需要注意的是,李超树因为每个节点都存了一条直线(相当于标记永久化),因 阅读全文
posted @ 2021-04-06 10:35 Troverld 阅读(90) 评论(0) 推荐(0) 编辑
摘要:III.II.[SDOI2016]游戏 明显,一条从 xy 的路径可以被拆作两条从LCA下来的路径,并且路径上每个点被写上的数是关于其深度的一次函数。 于是就树剖套李超树就行了。 但是有个问题,李超树不是只支持单点询问吗,怎么这里又支持区间了呢? 我们发现,对于一条线段,其与我 阅读全文
posted @ 2021-04-06 10:33 Troverld 阅读(63) 评论(0) 推荐(0) 编辑
摘要:III.李超线段树 李超线段树是一种可以维护动态凸包的线段树。更准确地说,其可以支持的常规操作有两种: 在平面直角坐标系中插入一条线段。 询问在坐标系中的一个点 (x,+) 向下看,能看到的点的坐标。换句话说,是一条自无穷高处引下的垂线与所有线段的交点中最高的那个点。 其具体实现 阅读全文
posted @ 2021-04-06 10:32 Troverld 阅读(135) 评论(0) 推荐(0) 编辑
摘要:II.I.CF1290E Cartesian Tree 并非一道很板的题,但是是可以被想出的。 考虑把笛卡尔树求出其中序遍历,则每个节点的子树是上面一段区间 [li,ri]。 考虑往中序遍历序列中某个位置 p 之后插入一个数 k。显然,依照定义,这个数必定大于原序列中所有 阅读全文
posted @ 2021-04-06 10:30 Troverld 阅读(82) 评论(0) 推荐(0) 编辑
摘要:II.吉司机线段树 吉司机线段树是一类支持区间所有数对某个数取 min,以及所有其它线段树操作的线段树。 我们以区间取 min、区间求和为例。 其具体实现是,在线段树的每个节点上存储区间最大值、区间次大值、区间最大值出现次数、区间和。显然,所有东西都可以简单维护。 然后,考虑区间 阅读全文
posted @ 2021-04-06 10:28 Troverld 阅读(328) 评论(1) 推荐(0) 编辑
摘要:I.V.[FJOI2018]领导集团问题 这题的难点主要是在状态的设计上。 首先,一个naive的想法是设 fi 表示节点 i 子树中,强制节点 i 选择的最优答案,然后使用线段树合并转移。 但是这样在合并不同子树时会出大问题。于是我们不得不更换状态。 于是我们设 \(f_ 阅读全文
posted @ 2021-04-06 10:26 Troverld 阅读(60) 评论(0) 推荐(0) 编辑
摘要:I.IV.[NOI2020]命运 半年前水了份 n2 暴力,没想到过了出题人用脚造的数据。这里是正解。 考虑DP。因为若两条路径呈包含关系,则更长的那条显然没用,于是设 fi,j 表示所有下端在 i 子树内且未被满足的路径中,上端最深的那条的深度。明显,要且仅要满足这 阅读全文
posted @ 2021-04-06 10:24 Troverld 阅读(87) 评论(0) 推荐(0) 编辑
摘要:I.III.[PKUWC2018]Minimax 看错题+理解错题,成功自闭一整晚 首先,一上来我们就能想到,如果用一个数组来表示每个节点所有可能出现的值及其概率,就会比较轻松。而因为树上父节点的数组是由两个子节点的数组合在一起转移而来的,所以考虑用线段树合并来维护该数组。 显然,没有儿子时转移很轻 阅读全文
posted @ 2021-04-06 10:22 Troverld 阅读(59) 评论(0) 推荐(0) 编辑
摘要:I.II.[ZJOI2019]语言 一开始看错题,以为同一种语言会被普及多次,然后就成了神题不会做。一看题解,发现自己看错题了,原来是垃圾题。 一个点所能到达的点,只有与它在同一条路径上出现过的点,换句话说就是经过它全部路径的并。 全部路径的并很好搞,就是全部路径端点建出虚树的大小。虚树大小也很好搞 阅读全文
posted @ 2021-04-06 10:21 Troverld 阅读(69) 评论(0) 推荐(0) 编辑
摘要:I.I.[POI2011]ROT-Tree Rotations 可以发现,你无论如何交换某个节点里的儿子们,该节点子树内每个数的数量都是不变的。 于是我们考虑类CDQ分治的思想——先计算儿子内部最小逆序对数,然后再在父亲处计算两个儿子之间的最小逆序对数。 因为保证叶节点上的东西是排列,所以设左儿子的 阅读全文
posted @ 2021-04-06 10:18 Troverld 阅读(51) 评论(0) 推荐(0) 编辑
摘要:XLII.[NOI2019] 弹跳 一眼看上去,单点向矩阵连边、最短路,这不是数据结构优化建图是什么? 想了想二维线段树优化建图,发现可以。 于是就写了,内层线段树写的还是可以压缩空间的线段树合并。 然后MLE了。 88 分代码: #include<bits/stdc++.h> using 阅读全文
posted @ 2021-04-02 23:11 Troverld 阅读(56) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示