最短路径——Dijkstra算法 BFS算法的局限性 Dijkstra算法 第一轮:循环遍历所有结点,找到还没确定最短路径,且dist最小的顶点vi,令final[i]=true; 检查所有邻接自vi的顶点,若其final值为false,则更新dist和path的信息 第二轮:循环遍历所有结点,找到 ...
分类:
编程语言 时间:
2020-06-30 14:43:38
阅读次数:
73
最短路径——Floyd算法 可以用来求带权图和无权图 Floyd算法:求出每一对顶点之间的最短路径 使用动态规划思想,将问题的求解分为多个阶段 第一个矩阵就是图的邻接矩阵 第二个矩阵表示两个顶点之间的中转点 遍历上一个阶段留下来的矩阵A,对于上一个矩阵A当中的每一个具体的元素我们都进行: 若 A^( ...
分类:
编程语言 时间:
2020-06-30 14:43:06
阅读次数:
79
数论 高斯消元法 0.1 概述 既然名为“高斯消元法”,肯定是高斯小朋友发明的。是一个复杂度$O(n^3)$的算法。(对不起,floyd君!再也不嘲讽你的复杂度了::>_<::) 这个算法的应用主要分为两类:“辗转相除法”和“列主元消元” 1.1 列主元消元 嘿,我就不按顺序来 这个方法的适用特征为 ...
分类:
其他好文 时间:
2020-06-29 22:38:43
阅读次数:
70
地址 https://www.acwing.com/problem/content/description/922/ H城是一个旅游胜地,每年都有成千上万的人前来观光。 为方便游客, 巴士公司在各个旅游景点及宾馆,饭店等地都设置了巴士站并开通了一些单程巴士线路。 每条单程巴士线路从某个巴士站出发,依 ...
这个教程中我会解释向量场寻路(vector field pathfinding)以及它对比其他传统的寻路的优点,比如Dijkstra's算法。对于 Dijkstra's算法和势场(potential fields)概念的理解可以帮助你更好的理解本文,但这不是必要条件。 简介 寻路问题有多种方案,每种 ...
分类:
编程语言 时间:
2020-06-29 13:29:39
阅读次数:
80
其实没什么好说的,从点 i 到点 j ,除了直接一条边连接直通还可以通过别的边中转得到,这样就得到了一个类似dp的一个状态转移方程。但是注意:1.Floyd必须用邻接矩阵存图。2.不能解决负环问题。 #include <bits/stdc++.h> using namespace std; int ...
分类:
编程语言 时间:
2020-06-28 18:56:40
阅读次数:
59
题目 https://www.luogu.com.cn/problem/P1396 分析 这道题与这道题很相似,只不过那道题需要使用dijkstra判断是否到达,而本题只需要使用DFS来判断 大概思路就是这种最大值中的最小的问题: 先找到题目中用到的拥挤度的最大值以及最小值,然后在这个范围内进行二分 ...
分类:
其他好文 时间:
2020-06-26 20:20:24
阅读次数:
62
目标 带权重的有向图上单源最短路径问题。且权重都为非负值。如果采用的实现方法合适,Dijkstra运行时间要低于Bellman-Ford算法。 思路 选择一个节点开始蔓延 计算自身到连接它的一级节点之间的距离, 全部作为候选集 在候选集中,找到距离最短的,对应的那个节点 删除这个节点在候选集中的信息 ...
分类:
编程语言 时间:
2020-06-26 10:40:55
阅读次数:
63
https://ac.nowcoder.com/acm/contest/6116/B 魔方国有n座城市,编号为1\sim n1~n。城市之间通过n-1条无向道路连接,形成一个树形结构。 在若干年之后,其中p座城市发展成了大都会,道路的数量也增加到了m条。 大都会之间经常有贸易往来,因此,对于每座大都 ...
分类:
其他好文 时间:
2020-06-25 14:03:39
阅读次数:
130
Dijkstra算法算是贪心思想实现的,首先把起点到所有点的距离存下来找个最短的,然后松弛一次再找出最短的,所谓的松弛操作就是,遍历一遍看通过刚刚找到的距离最短的点作为中转站会不会更近,如果更近了就更新距离,这样把所有的点找遍之后就存下了起点到其他所有点的最短距离。(贪心算法每次都找到最优解,不回退 ...
分类:
编程语言 时间:
2020-06-25 12:21:33
阅读次数:
58