算法设计
文章平均质量分 60
算法设计
城东小路
人是一根会思考的苇草
展开
-
RMQ的ST表算法
RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干次询问RMQ(i,j),返回数列A中下标在区间[i,j]中的最小/大值。 本文介绍一种比较高效的ST算法解决这个问题。ST(Sparse Table)算法可以在O(nlogn)时间内进行预处理,然后在O(1)时间内回答每个查询。 1.预处理 设A[i]是要求...转载 2018-08-10 11:20:08 · 144 阅读 · 0 评论 -
网络流模板
一般增广路算法(EdmondsKarp) 算法流程: 每次用BFS找一条最短的增广路径,然后沿着这条路径修改流量值。当没有增广路时,算法停止,此时的流就是最大流。 增广路算法的效率: EK算法的时间复杂度是O(VE^2),时间效率较慢,在稀疏图中效率还是比较高的。 算法实现: 邻接矩阵 #include<stdio.h> #include<string.h>...原创 2018-08-16 23:11:28 · 136 阅读 · 0 评论 -
并查集中的启发式合并
算法原理 并查集一般有两种方法来保持复杂度不退化,一种是路径压缩,另一种则是按照秩来做启发式合并。 一般情况下我们都是用第一种,压缩路径通过递推找到祖先节点后,在回溯时将它的子孙节点都直接指向祖先,这样以后每次调用Find( )函数找父亲时复杂度就变成了O(1)。但是路径压缩时直接将节点的父亲修改成最终的祖先节点,在破坏原先的树结构的同时,在有些题目中也会损失信息。而不使用压缩路径,直接用暴力...原创 2018-08-07 16:36:55 · 1475 阅读 · 0 评论