随笔分类 - 数据结构
摘要:I.IV.[WC2010]重建计划 咋感觉这篇博客里的题全可以用一些奇奇怪怪的方法水过去啊喂 首先,淀粉质+单调队列按秩合并的算法就不说了,有兴趣的可以参见本人的题解,如果能够证明或证伪该做法那更好。 现在考虑长链剖分的做法。 首先,其明显是0/1分数规划的场景,直接套上二分转判定性问题。 之后,我
阅读全文
摘要:I.II.[POI2014]HOT-Hotels 加强版 易于发现,三点间两两距离相等,当且仅当两个LCA较深的点到它们的LCA距离相等,且第三个点到该LCA的距离与前两个点相同。 于是我们设 表示 子树中有多少对点,它们到LCA距离相同,且上述距离比该LCA到
阅读全文
摘要:V.CF632F Magic Matrix 暴 力 出 奇 迹 其限制可以被转化为,对于位置 ,对其第 行和第 列的向量怼一块求个 后,所有位置的值都不小于 的值。 于是我们将所有元素按照从大到小排序,并按照上述次序依次
阅读全文
摘要:I.CF487E Tourists 用这题作圆方树的入门题还是很合适的。 首先,先建出圆方树出来。我们可以给方点赋一个权值,即为它连着的所有圆点的权值的。然后只需要在圆方树上查询路径即可。使用树剖即可。 但这个做法会被叉掉:当原图是一张菊花图时,花心的圆点将会连向个
阅读全文
摘要:如果有线性代数基础的话会更易理解。推荐配合本人的线性代数学习笔记食用。 线性基是针对某个序列生成的一个集合,它具有以下两条性质: 线性基中任意选择一些数的异或值所构成的集合,等于原序列中任意选择一些数的异或值所构成的集合。 线性基是满足上述条件的最小集合。 有了上面这两条性质,我们便可以得出如下几条
阅读全文
摘要:IV.IV.[Ynoi2016] 镜中的昆虫 没错,这里就是CDQ分治 的优势所在了——本题似乎卡掉了空间复杂度为 的树套树。 但这不妨碍我继续说:树套树yyds 首先,这里有一个结论:长度为 的序列,修改 次,
阅读全文
摘要:III.III.CF932F Escape Through Leaf 明显DP式很容易写出;然后观察发现其就是子树中一堆函数 中对于某个 的 的最小值,于是线段树合并李超树就OK了。 需要注意的是,李超树因为每个节点都存了一条直线(相当于标记永久化),因
阅读全文
摘要:III.II.[SDOI2016]游戏 明显,一条从 到 的路径可以被拆作两条从LCA下来的路径,并且路径上每个点被写上的数是关于其深度的一次函数。 于是就树剖套李超树就行了。 但是有个问题,李超树不是只支持单点询问吗,怎么这里又支持区间了呢? 我们发现,对于一条线段,其与我
阅读全文
摘要:III.李超线段树 李超线段树是一种可以维护动态凸包的线段树。更准确地说,其可以支持的常规操作有两种: 在平面直角坐标系中插入一条线段。 询问在坐标系中的一个点 向下看,能看到的点的坐标。换句话说,是一条自无穷高处引下的垂线与所有线段的交点中最高的那个点。 其具体实现
阅读全文
摘要:II.I.CF1290E Cartesian Tree 并非一道很板的题,但是是可以被想出的。 考虑把笛卡尔树求出其中序遍历,则每个节点的子树是上面一段区间 。 考虑往中序遍历序列中某个位置 之后插入一个数 。显然,依照定义,这个数必定大于原序列中所有
阅读全文
摘要:II.吉司机线段树 吉司机线段树是一类支持区间所有数对某个数取 ,以及所有其它线段树操作的线段树。 我们以区间取 、区间求和为例。 其具体实现是,在线段树的每个节点上存储区间最大值、区间次大值、区间最大值出现次数、区间和。显然,所有东西都可以简单维护。 然后,考虑区间
阅读全文
摘要:I.V.[FJOI2018]领导集团问题 这题的难点主要是在状态的设计上。 首先,一个naive的想法是设 表示节点 子树中,强制节点 选择的最优答案,然后使用线段树合并转移。 但是这样在合并不同子树时会出大问题。于是我们不得不更换状态。 于是我们设 \(f_
阅读全文
摘要:I.IV.[NOI2020]命运 半年前水了份 暴力,没想到过了出题人用脚造的数据。这里是正解。 考虑DP。因为若两条路径呈包含关系,则更长的那条显然没用,于是设 表示所有下端在 子树内且未被满足的路径中,上端最深的那条的深度。明显,要且仅要满足这
阅读全文
摘要:I.III.[PKUWC2018]Minimax 看错题+理解错题,成功自闭一整晚 首先,一上来我们就能想到,如果用一个数组来表示每个节点所有可能出现的值及其概率,就会比较轻松。而因为树上父节点的数组是由两个子节点的数组合在一起转移而来的,所以考虑用线段树合并来维护该数组。 显然,没有儿子时转移很轻
阅读全文
摘要:I.II.[ZJOI2019]语言 一开始看错题,以为同一种语言会被普及多次,然后就成了神题不会做。一看题解,发现自己看错题了,原来是垃圾题。 一个点所能到达的点,只有与它在同一条路径上出现过的点,换句话说就是经过它全部路径的并。 全部路径的并很好搞,就是全部路径端点建出虚树的大小。虚树大小也很好搞
阅读全文
摘要:I.I.[POI2011]ROT-Tree Rotations 可以发现,你无论如何交换某个节点里的儿子们,该节点子树内每个数的数量都是不变的。 于是我们考虑类CDQ分治的思想——先计算儿子内部最小逆序对数,然后再在父亲处计算两个儿子之间的最小逆序对数。 因为保证叶节点上的东西是排列,所以设左儿子的
阅读全文
摘要:IX.[Ynoi2017] 由乃的玉米田 比VII.小清新人渣的本愿仅仅多了一个除法操作。 常规方法看上去不行,考虑根号分治。对于 的询问,直接暴力枚举较小的那个数即可。对于 的询问,考虑 扫一遍回答所有 为某一
阅读全文
摘要:VIII.CF633H Fibonacci-ish II 强烈谴责卡常屑题( 莫队。于是要支持插入数、查询与斐波那契数列的点积和。 离散化后就直接在线段树上处理。于是变成单点插入/删除(这个很 easy)以及后缀斐波那契数列前移/后移。 直接上矩阵维护。但是会TLE(因为常数是 )。预
阅读全文
摘要:VII.小清新人渣的本愿 仍是 bitset 优化莫队。 具体而言,减操作就直接右移/左移 bitset(具体哪个都行,反正是等价的)然后求 and 看看是否非零即可;加操作就同时维护原本的 bitset 和取反后的 bitset,然后就像减操作一样处理即可;乘操作就直接 地
阅读全文