首页 > 其他分享 >最短路

最短路

时间:2024-07-28 08:58:37浏览次数:13  
标签:全源 mid 我们 floyd 短路 边权

floyd——最短路里玩最花的
dij——跑得很快
spfa——差分约束&费用流
01bfs——边权只有两个时候最快

求最小环

首先floyd中\(f[i][j][k]\)代表从i到j中间只经过编号小于等于k的节点的最小值。那么我们可以想到一个环满足i-j的优弧(类似这么叫),然后剩下一个点编号大于k,直接加上边权即可。正确性是因为这是最优化问题,一个环上必定会有一个编号最大的点,答案就在这时候更新

分治

floyd的k的顺序是可以随便取的,所以可以分治。

百度地图的实时路况
要求的是全源最短路分别不走1-n的路径长度之和。删去一个贡献非常麻烦,并且我们发现有非常多贡献重复计算。考虑分治,和这题有点像,我们用类似线段树的方式。现在做到l-r代表全源最短路没有l-r时的样子,然后我们可以利用这个答案求出l-mid和mid+1-r的答案。具体而言,我们现在往下传l-mid的时候就将mid+1-r加入。但此时我们发现空间不够。我们发现只需记录线段树高的f数组就可以了,因为我们用的是dfs。

CF1196F
这题是全源最短路,同时边权都为正所以有很好的性质。我们删掉边权排名>=k的边,发现只剩下了400条边,然后直接\(n^3\)暴力floyd即可

P1811CF59E
三元关系不好处理,考虑将它们变成二元关系。具体而言,我们将边映射到一些标号上,然后这个三元关系就变成二元关系了。然后我们对边重新建图,发现边可能达到\(n^2\)级别,于是我们就不把边建出来。我们只是遍历一下,用map大力存一下。下次用map的时候记得重载下比较的运算符,不然会寄掉

标签:全源,mid,我们,floyd,短路,边权
From: https://www.cnblogs.com/wuhupai/p/18327868

相关文章

  • 【学习笔记】最短路
    【学习笔记】最短路前言:只是对一些最短路算法的实现整理。以下内容有部分摘自OI_wiki。Floyd算法求全源最短路。可以有负边权。Floyd算法的本质是动态规划。设\(dis(k,i,j)\)表示由若干个编号不超过\(k\)的节点中转后从\(i\)到\(j\)的最短路。该“动规”有两......
  • 【MATLAB源码-第159期】基于matlab的胡桃夹子优化算法(NOA)机器人栅格路径规划,输出做短
    操作环境:MATLAB2022a1、算法描述胡桃夹子优化算法(NutcrackerOptimizationAlgorithm,NOA)是一个灵感来源于胡桃夹子的故事的元启发式优化算法。这个故事中,胡桃夹子是一个能够将坚果壳轻易地破开以获取内部果仁的工具。在优化算法的语境下,这个过程被比喻为寻找问题解决方案......
  • 洛谷 模板 单源最短路径(标准版)
    原题p4779题目背景2018年7月19日,某位同学在 NOIDay1T1归程 一题里非常熟练地使用了一个广为人知的算法求最短路。然后呢?100→60;Ag→Cu;最终,他因此没能与理想的大学达成契约。小F衷心祝愿大家不再重蹈覆辙。题目描述给定一个 n 个点,m 条有向边的带非负......
  • 图的最短路径算法(SPFA,Dijkstra,Bellman_Ford)(迪杰斯特拉算法,Spfa算法,贝尔曼-福特算
    目录Dijkstra迪杰斯特拉算法写法时间复杂度例题描述输入描述输出描述样例输入用例输出用例写法Spfa算法例题描述输入描述输出描述样例输入用例输出用例写法Bellman_Ford算法(贝尔曼-福特算法)写法例题描述输入描述输出描述样例输入样例输出样例......
  • 【技巧】0/1最短路
    这是$Dijkstra$。voiddijkstra(intx){ priority_queue<pair<int,int>>que; memset(d,0x3f,sizeof(d)); d[x]=0; que.push({-d[x],x}); while(!que.empty()) { inty=que.top().second; que.pop(); e[y]=true; for(rii=f[y];i;i=way[i].h) { ......
  • Johnson 全源最短路算法以及 Primal-Dual 原始对偶算法
    Johnson全源最短路算法引入:多源最短路问题,设点数为\(n\)边数为\(m\)。我们有如下方案:floyd,时间复杂度\(O(n^3)\),适合任意图。Bellman-ford(SPFA),时间复杂度\(O(n^2m)\),适合任意图。Dijkstra,时间复杂度\(O(nm\logm)\),适合非负权图。综上分析,我们发现:Dijkstra的时间......
  • 获取所有钥匙的最短路径
    获取所有钥匙的最短路径-力扣(LeetCode)听完左程云teacher的讲解感觉这道题很简单不就是记录一下我有几把钥匙走到这个点我有几把钥匙夺走几次和普通bfs一样只是我要多走几次,等到上手发现真的难,水平还是太差了,开始我需要进行初始化每一个的初始化,不然我有问题,他的核心代码很......
  • 获取所有钥匙的最短路径
    classSolution{public:intshortestPathAllKeys(vector<string>&a){//上右下左structnode{intx,y,w;};constintN=34,K=6;intdirs[5]={-1,0,1,0,-1};boolvis[N]......
  • 【图论】【模板】最长路、最短路
    最短路Dijkstra算法思路Dijkstra算法,采用贪心思想,在某一时刻如果\(dis\)数组中\(dis_u\)最小,那么就固定\(u\),\(dis_u\)一定是\(1\rightarrowu\)的最短路径,然后我们再通过\(u\)更新与\(u\)有边相连的\(v\),如果\(dis_v>dis_u+w\),那么\(dis_v=dis_u+w\)......
  • Loj P10064 黑暗城堡 题解 最短路径树记数
    这道题是一道最短路径树问题。首先,什么是最短路径树呢?定义一个图的最短路径树表示一个图上的生成树,且根节点到图上任一点的距离等于原图上两者之间的距离。而不难发现,题目其实是在求图上最短路径树记数。首先,建出最短路径树。枚举每条边,判断边两个端点到根的距离之差是否为......