随笔分类 -  图论 / lca

摘要:好题,又学两个思路。 先把问题变简单一点,去掉深度限制,那么有两种做法: 经典的前驱后继转化到二维数点。 颜色相同的点按 \(dfs\) 序排序,每个点 \(+1\),相邻两点 \(lca-1\)。转化为区间求和。 第二种相对实现简单。 假如加上深度,我们可以离线问题,按深度顺序加点。 要在线的话, 阅读全文
posted @ 2024-12-25 12:00 长安一片月_22 阅读(7) 评论(0) 推荐(0) 编辑
摘要:三棵树就很毒瘤了,我们一棵一棵看。 关于第一棵树的路径,经典解法就是点分治和边分治,考虑哪种更加简单。 设 \(dis1/2/3(x)\) 表示 \(x\) 在第 \(1/2/3\) 棵树中的深度(第一棵树的深度当然是点到重心或重边的距离),\(lca2/3(x,y)\) 表示在第 \(2/3\) 阅读全文
posted @ 2024-12-24 07:46 长安一片月_22 阅读(5) 评论(0) 推荐(0) 编辑
摘要:感觉长脑子了。 考虑在路线两端点的 \(lca\) 计算贡献,那么线段可以分两类: \(u\) 为 \(v\) 祖先。 \(u,v\) 互不为祖先。 设 \(dp_i\) 表示只考虑 \(i\) 子树内的路线时的答案。 引理:若插入一条以 \(i\) 为 \(lca\) 的路径会使以 \(i\) 的 阅读全文
posted @ 2024-12-20 22:04 长安一片月_22 阅读(11) 评论(0) 推荐(0) 编辑
摘要:\(xor\) 最大值想到线性基,路径想到 \(lca\) 和树链剖分,由于没有修改用 \(lca\) 就可以。先用处理 \(fa\) 数组的方式处理倍增线性基(自然是得用线性基合并的),在求 \(lca\) 时把所有线性基全部合到一块儿就行。 考虑到本题实际上核心在于让路径上的线性基数量 \(\l 阅读全文
posted @ 2024-12-16 09:32 长安一片月_22 阅读(9) 评论(0) 推荐(0) 编辑

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