![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
钱晓峰
君子务本,本立道生
展开
-
最近公共祖先 LCA 倍增算法
最近公共祖先 LCA 倍增算法倍增算法可以在线求树上两个点的LCA,时间复杂度为nlogn预处理:通过dfs遍历,记录每个节点到根节点的距离dist[u],深度d[u]init()求出树上每个节点u的2^i祖先p[u][i]求最近公共祖先,根据两个节点的的深度,如不同,向上调整深度大的节点,使得两个节点在同一层上,如果正好是祖先结束,否则,将连个节点同时上移,查询最近公共祖先。void dfs(in转载 2017-10-26 23:34:43 · 199 阅读 · 0 评论 -
DAG之最短路
DAG是学习动态规划的基础,很多问题都可以直接转化为DAG上的最长路、最短路或路径计数问题。 两个经典的DAG模型,嵌套矩形和硬币问题,今天先写第一个嵌套矩形问题。 一、嵌套矩形 第一个DAG模型:矩形嵌套问题 描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽。 矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当 a < c , b < d 或者 b < c , a < d (转载 2017-12-03 17:52:26 · 595 阅读 · 0 评论