LCA — 欧拉序+ST表 \(O(n\log n)\) 预处理,\(O(1)\) 询问?。 \(lca(x,y)=\) 欧拉序中最早出现的 \(x\) 和 \(y\) 中间深度最浅的点。 Luogu P3379 #include <bits/stdc++.h> using namespace st ...
分类:
其他好文 时间:
2021-04-12 12:13:56
阅读次数:
0
题目描述 给定一个 \(n\) 个点 \(m\) 条边的无向连通图,编号为 $1$ 到 \(n\) ,没有自环,可能有重边,每一条边有一个正权值 \(w\) 。 给出 \(q\) 个询问,每次给出两个不同的点 \(u\) 和 \(v\) ,求一条从 \(u\) 到 \(v\) 的路径上边权的最大值最 ...
分类:
Web程序 时间:
2020-07-26 19:44:14
阅读次数:
96
题目链接 注意到每种冰激凌在树上的结点是连通的。如果整棵树是一条链的话,那么问题就转化成了经典的一维区间染色问题。 所以我们要考虑如何把链上的情况推广到树上的情况。 一开始我想把欧拉序转换成区间来做,然而发现并不可行,因为一颗连续的子树可能会形成许多个连续的区间,需要另辟蹊径。 任选一个结点作为树根 ...
分类:
其他好文 时间:
2020-03-16 15:09:56
阅读次数:
62
什么是欧拉序,可以去这个大佬的博客(https://www.cnblogs.com/stxy-ferryman/p/7741970.html)巨详细 因为欧拉序中的两点之间,就是两点遍历的过程,所以只要找遍历过程中对应的最小的深度就行了,这里用st表存,first存第一个u出现的地方,用value存 ...
分类:
其他好文 时间:
2020-02-22 21:45:21
阅读次数:
74
猴猴的比赛 dfs序 两颗$n$节点的树,不相同,问多少点对$(u,v)$在两棵树上均满足路径$v$在$u$子树中 $n\le 10^5$ 暴力: $n^2$暴力枚举点对用$dfs$序$O(1)$判断是非满足条件,~~或者用欧拉序$O(1)$求lca~~ 正解: 先跑第一棵树,求出其$dfs$序,记 ...
分类:
其他好文 时间:
2019-11-01 16:47:04
阅读次数:
78
https://zhuanlan.zhihu.com/p/84236967 https://www.cnblogs.com/TinyWong/p/11260601.html 一个月过去了,我还是没有学动态点分治... 欧拉序保存了每个节点进入和返回的情况,$n$ 个结点的树,欧拉序列长度为 $2n ...
分类:
其他好文 时间:
2019-10-13 01:04:40
阅读次数:
183
P3379 【模板】最近公共祖先(LCA) 用欧拉序$+rmq$维护的$lca$可以做到$O(nlogn)$预处理,$O(1)$查询 从这里剻个图 ...
分类:
其他好文 时间:
2019-09-05 23:23:32
阅读次数:
118
题意:给定一棵树,带边权。然后Q次询问,每次给出(u,v),求这个路径上最小的未出现的边权。 思路:树上莫队,求mex可以用分块或者bitset,前者可能会快一点。 莫队过程:求出欧拉序,即记录dfs的in和out时间戳。 然后摊平成数组,在数组上进行莫队。 一般的莫队需要单独考虑LCA,因为LCA ...
分类:
其他好文 时间:
2019-08-24 18:55:44
阅读次数:
72
,二叉树是一颗线段树,树状数组,树上的每个维护节点负责维护一个区间信息,节点之间又包含和属于的关系。例如线段树: DFS序: 我们通过对每个节点设置两个量,in和out。从根节点开始DFS搜索,in为第一次搜索到时的时间戳,out为退出出栈时的时间戳。 可以得到,例如我们要查询以b为根节点我们只需要 ...
分类:
其他好文 时间:
2019-08-13 00:03:00
阅读次数:
79
"题面" 题解 这里讲一种硬核做法。 首先$\mathrm{dfs}$整棵树,求出这棵树的欧拉序,然后$\mathrm{LCA}$问题就变成了$\pm 1\mathrm{RMQ}$问题。 考虑$\mathrm{O}(n)$解决$\pm 1\mathrm{RMQ}$问题。 将原序列分块,每一块长度为$ ...
分类:
其他好文 时间:
2019-07-06 13:32:50
阅读次数:
105