- 博客(4)
- 收藏
- 关注
原创 线段树详解(洛谷模板题)
一、算法概况 线段树是一种二叉搜索树,它将一个区间分成多个单元区间,每个单元区间对应线段树的一个叶子节点,有查询区间和,查询区间最大值、最小值等功能(本篇讲解的是求区间和的代码),由于它二叉结构的特性,使得他的操作复杂读为O(logN) 线段树的根节点代表所要维护的值在总区间 [a,b] 的值,他的左子节点代表区间 [a,(a+b)/2] ,他的右子节点代表区间 [(a+b)/
2017-11-11 15:40:47 1184
原创 dijkstra堆优化 详解(洛谷模板题)
一、算法概况 dijkstra是一种稳定的求单源最短路的算法,时间复杂度O((m+n)logn) ,m表示边数,n表示点数。二、算法过程1.将源点以及和他相连的点加入堆2.选出堆顶元素A(代价最小的元素),将他从堆中删除,然后调整堆3. 处理与u相邻的,未被访问过的,满足三角不等式的顶点 1):若该点在堆里,更新距离,并调整该元素在堆中的位置。 2):
2017-11-09 20:07:52 1079
原创 LCA详解(洛谷模板题)
一、算法定义 LCA是在线查询树上两点的最近公共祖先的算法,可运用倍增的方法,时间复杂组O(nlogn)二、算法过程 1.倍增使深度较深的点跳到和深度较浅的点同一深度。 2.两个点一起往上跳,直到找到公共祖先三、分步代码详解1.预处理:通过dfs,求出树上每个节点的深度。注:p[x][0]是x的父节点,如果遍历到父节点则跳过,其他的与该点相邻的点都是他的子节点
2017-11-09 20:03:21 1443
原创 spfa算法(洛谷模板题)
一、概况 SPFA算法是常用的最短路算法之一,复杂度还是非常可观的。 但缺点在于遇到稠密图或者某些奇特的图时可能会变慢。 SPFA算法是一种单元算法,选择一个出发点,计算它与其他点的最短距离。通过更新边来不断更新最短路。在图论的最短路题中应用十分广泛。 二、过程 1.初始化每个节点到第一个点的距离 其他点到第一个点的距离赋个大数(such as 19260817)方便此后进
2017-11-08 20:09:25 966
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人