摘要: LCA_倍增法 说起LCA,大家一定不会陌生,最近公共父祖先。 那么求解这种问题,我熟悉的算法有两种:tarjan+并查集离线算法 / 倍增法 今天主要分享一下倍增法,效率是比前一种方法高的。 主要思想: 从深度较深的节点向上移动,直到和另外一个节点处于同一深度。 然后两个节点一起向上移动,直到各自 阅读全文
posted @ 2021-02-19 10:42 BryantKun 阅读(119) 评论(0) 推荐(0)
摘要: 初识tarjan算法,还要从一道算法考试题说起,当时没有听过这个算法,当然是铩羽而归 我理解的tarjan算法: 基础为dfs的思想,从根节点(可以是任意一个点)开始,递归的每个点,都按照访问顺序赋予编号,我们用dfn[]数组表示, 同时我们记录这些点的深度,用low[]数组表示 在dfn探索的过程 阅读全文
posted @ 2020-10-22 09:26 BryantKun 阅读(73) 评论(0) 推荐(0)
摘要: 求双连通图,需要使用缩点,缩点的意思就是将图中的环都缩为一个点,给这些点进行编号,最终必然形成一个树。 那么很容易推论出,至少要加的边数num=(leaf+1)/2; leaf即:所有度为1的点的个数(度大于1的点必为根节点) 代码如下: package com.Vjudge;import java 阅读全文
posted @ 2020-10-22 09:07 BryantKun 阅读(100) 评论(0) 推荐(0)
摘要: //此题是未使用tarjan算法的递归实现,主要原因为,当某一条边属于两个环时,普通tarjan算法结果不对。 // 当然此题已有限制,边最多只属于一个环。import java.io.BufferedReader;import java.io.InputStreamReader;import ja 阅读全文
posted @ 2020-10-22 09:02 BryantKun 阅读(401) 评论(0) 推荐(0)
摘要: 闲来无事,学习了下新的存储结构:链式向前星。之前自己一直用邻接链表,发现这种方式好像不如链式向前星,具体原因也搞得不是很明白,有大佬可以帮忙解答一下。主要记录下链式向前星的存储应用结合dijkstra求最短路径 P4779 https://www.luogu.com.cn/problem/P4779 阅读全文
posted @ 2020-08-06 15:00 BryantKun 阅读(157) 评论(0) 推荐(0)
摘要: P4467 https://www.luogu.com.cn/problem/P4467 [SCOI2007]k短路 求连通图中的第K短路 求第K短路需要使用A*算法, A* 寻路算法 原文地址: http://www.gamedev.net/reference/articles/article20 阅读全文
posted @ 2020-08-06 14:52 BryantKun 阅读(79) 评论(0) 推荐(0)