2013年10月12日

LCA问题的ST,tarjan离线算法解法

摘要: 一 ST算法与LCA 介绍 第一次算法笔记这样的东西,以前学算法只是笔上画画写写,理解了下,刷几道题,其实都没深入理解,以后遇到新的算法要把自己的理解想法写下来,方便日后回顾嘛>=< RMQ问题就是询问一个给定数组相应区间i…j的最大值。 ST算法的思路是:f(i,j)表示i开始的2^j个数中最大值/最小值,通过运用dp的思想初始化f(i,j)求出每个i(1….n)出发长度为2... 阅读全文

posted @ 2013-10-12 23:41 rootial 阅读(352) 评论(0) 推荐(0)

HDU Traffic Real Time Query System

摘要: 题目大意是:对于(n, m)的图,给定边a, b查询从a到b要经过的割点的最少数目。先tarjan算法求双连通然后缩点,即对于每个割点将周围的每个双连通看成一个点与之相连。然后求解LCA即可,距离dis[u]表示从根出发到u的遍历过程中经过的割顶的数目,利用tarjan离线算法, 最后答案是:dis[u] + dis[v] - 2*dis[findset(v)] + (findset(v) > bcc_cnt)。注意findset(v) > bcc_cnt表示当LCA(u,v) 为割顶时的判断,此时必须加1。代码: 1 #include 2 #include 3 #include 阅读全文

posted @ 2013-10-12 23:13 rootial 阅读(367) 评论(0) 推荐(0)

ZOJ - 3195 Design the city

摘要: 题目要对每次询问将一个树形图的三个点连接,输出最短距离。利用tarjan离线算法,算出每次询问的任意两个点的最短公共祖先,并在dfs过程中求出离根的距离。把每次询问的三个点两两求出最短距离,这样最终结果就是3个值一半。其实开始我用的一种很挫的方法才AC的,具体思路就不说了,感觉很麻烦又不好写的样子。怎么没想到上面的简便方法呢。初始代码: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include ... 阅读全文

posted @ 2013-10-12 15:51 rootial 阅读(241) 评论(0) 推荐(0)

导航