
图论
文章平均质量分 80
Byte97
刷题就好...
展开
-
Tarjan LCA
在遍历到u时,先tarjan遍历完u的子树,则u和u的子树中的节点的最近公共祖先就是u,并且u和【u的兄弟节点及其子树】的最近公共祖先就是u的父亲。注意到由于我们是按照DFS顺序遍历的,我们可用一个color数组标记,正在访问的染色为1,未访问的标记为0,已经访问到即在【u的子树中的】及【u的已访问的兄弟节点及其子树中的】染色标记为2,这样我们可以通过并查集的不断合并更新,通过find实现以上目标原创 2014-10-09 18:25:37 · 373 阅读 · 0 评论 -
ST解决RMQ问题
Sparse Table即稀疏表算法(ST 算法)。它的基本方法就是DP。F[i][j]表示从i往后数2^j个数字中的最大/最小值,即区间[i,i+2^j-1]的最值。采取二分的思想f[i][j]=max{ f[i][j-1] , f[i+2^(j-1)][j-1] }然后用DP进行求解即可。 查询:[m,n]先求出一个最大的k满足2^k于是我们把[m,n]分成了两转载 2014-10-09 18:24:56 · 437 阅读 · 0 评论 -
Pascal 倍增求LCA
{效率 预处理O(nlog(n)) 查询(O(log(n))) 优点:能够记录路径、 缺点:没有LCA转RMQ的ST算法快}program pro;var link:array[0..100]of record ke,po,ne,pr:longint; end; deep,st:array[0..100]of longint;原创 2014-10-09 18:16:23 · 1171 阅读 · 0 评论 -
次短路(非严格)
这里的次短路是指最短路只有t原创 2014-10-28 20:10:48 · 714 阅读 · 0 评论