随笔分类 - 算法竞赛之图论
摘要:概论 分层图,即拆点,是图论问题中一种常见的建图技巧,应用较为广泛。深入理解并掌握这种技巧,对设计算法解决一些图论问题会颇有助益。 类比动态规划中的状态机模型,当单纯的一个点无法表示清楚其上信息时,我们可以考虑拆点,将一个状态拆成多个状态,这样就可以把信息理清楚了。李煜东在《算法竞赛进阶指南》中指出
阅读全文
摘要:引语 网络流是图论中一个博大精深的分支。其最主要的难点在于各种模型的建立,我们需要熟练掌握其中的算法模板并且充分理解其原理,积累建图经验,才能在遇到网络流的题目时从容应对。 本篇blog主要介绍网络流的基本概念,弄清楚这些概念、定理及理解其证明,对于后面的学习会颇有助益。 基本概念 流网络 一个流网
阅读全文
摘要:基础知识 单源最短路 Dijkstra void dijkstra() { memset(vis,0,sizeof vis); memset(dis,0x3f,sizeof dis); dis[1]=0; for(int i=1;i<=n-1;i++) { int p=0; for(int j=1;
阅读全文
摘要:概念 差分约束系统是一种特殊的N元一次不等式组。它包含N个变量x1~XN以及M个约束条件,每个约束条件均形如xi-xj<=ck,其中ck是常数,i,j∈[1,N],k∈[1,M]。 检索 应用一:求该N元一次不等式组的一组可行解 应用二:求满足约束条件的xi的最大值或最小值 应用一 首先xi - x
阅读全文
摘要:引语 作为求解最短路问题的算法中最稳健的算法,Dijkstra以其惊奇的操作和独特的魅力,吸引了无数OIer学习、钻研。身为一名蒟蒻,本人以有限的能力付诸仔细的思考,对于Dijkstra算法中贪心思想的正确性有了新的认识。 咳咳,相信我,这是一篇很正常的博客,本人也是一名很正常的博主。 大多数OIe
阅读全文
摘要:一、邻接矩阵 邻接矩阵g[i][j]即表示顶点i到顶点j是否有一条有向边,有为1,无为0。 二、邻接表 第i行的每个数表示顶点i到该顶点有一条有向边。 三、前向星 等价于n个单向链表,简单易懂。 四、边集数组 存储边的起点、终点、权值。
阅读全文
摘要:首先明确概念: 二分图:设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。 奇数环:一个图中边数为奇数的环。 染色法原理: 首先任意取出一个顶点
阅读全文
摘要:最小生成树: 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。简单来说就是有且仅有n个点n-1条边的连通图。 而最小生成树就是最小权重生成树的简称,即所有边的权值之和最小的生成树。 最小生成树问题一般有以下两种求解方式。 一、Pri
阅读全文
摘要:一、Floyd算法本质 首先,关于Floyd算法: Floyd-Warshall算法是一种在具有正或负边缘权重(但没有负周期)的加权图中找到最短路径的算法。算法的单个执行将找到所有顶点对之间的最短路径的长度(加权)。 通俗一点说,Floyd就是可以用于求解多源汇最短路径的算法,也就是求连通图中任意两
阅读全文
摘要:一.Floyd算法 用于计算任意两个节点之间的最短路径。 参考了five20的博客 Floyd算法的基本思想如下:从任意节点A到任意节点B的最短路径不外乎2种可能,1是直接从A到B,2是从A经过若干个节点到B,所以,我们假设dist(AB)为节点A到节点B的最短路径的距离,对于每一个节点K,我们检查
阅读全文

浙公网安备 33010602011771号