分层图最短路(SPFA)

vmware虚拟机网络连接问题 主机:ubuntu14.04 Vitual Network Editor 阅读详情

上周考了道这个因为段考到现在才改完这个 = =

这类问题嘛......算了我先放题目 就比如这个

很显然问题都是最短路 然后中间可以跳边走的那种

然后考场上我愣是想到了dp.....

好吧后来我也是在这个基础上改的 不过这个就是叫分层图最短路....

做法一:拆点 能免费几条路就把一个点拆成多少个点 当然还要加1 (原始的) 连的话就是 x 和 y + n 连一个费用为 0 的边 x 和 y 连一个费用为费用的边 如果无向图别忘了反过来

做法二:就像dp一样 dis[p][k] 为 到达 p 号点 使用 k 条免费路时最小的 dis 值 然后设 p 点到达 b 点 推导就是这样个东西

dis[b][k] = min(dis[b][k],min(dis[p][k] + v,dis[p][k - 1])) 这个应该分两个 但我懒得打了于是就合并了

当然遇到最短路 卡SPFA注意啦 然后我有魔改SPFA(用dij的思想的=-=) 完全不怕!好吧就是加堆啦 = =

其实原本这堆超丑的 如下

inline void push(int p,int k)
{
	++tot;
	heap[tot][0] = p;
	heap[tot][1] = k;
	o[p][k] = 1;
	int now = tot;
	while (now > 1 && dis[heap[now][0]][heap[now][1]] < dis[heap[now >> 1][0]][heap[now >> 1][1]])
	swap(heap[now],heap[now >> 1]),now >>= 1;
}
inline void pop(int &p,int &k)
{
	p = heap[1][0];
	k = heap[1][1];
	o[p][k] = 0;
	heap[1][0] = heap[tot][0];
	heap[1][1] = heap[tot][1];
	--tot;
	int now = 1;
	while (now << 1 <= tot && dis[heap[now][0]][heap[now][1]] > dis[heap[now << 1][0]][heap[now << 1][1]] ||
		now << 1 < tot && dis[heap[now][0]][heap[now][1]] > dis[heap[now << 1 | 1][0]][heap[now << 1 | 1][1]])
	{
		int nxt = now << 1;
		if (nxt < tot && dis[heap[nxt | 1][0]][heap[nxt | 1][1]] < dis[heap[nxt][0]][heap[nxt][1]]) ++nxt;
		swap(heap[now],heap[nxt]);
	}
}

然后中间判断距离的就放judge里面了 看起来好多了 下放代码

#include <algorithm>
#include <cstring>
#include <cstdio>
#define MAXN 10010
#define MAXM 100010
using namespace std;
struct edge {
	int ne,to,v;
} e[MAXM];
struct queue {
	int nod,ed;
} heap[MAXM];
int first[MAXN],dis[MAXN][22];
int tot;
short o[MAXN][22];
inline short judge(queue x,queue y) {return dis[x.nod][x.ed] > dis[y.nod][y.ed];}
inline int r()
{
	char q = getchar(); int x = 0,y = 0;
	while (q < '0' && q != '-' || q > '9') q = getchar();
	if (q == '-') ++ y,q = getchar();
	while ('0' <= q && q <= '9')
		x = (x << 3) + (x << 1) + q - (3 << 4),q = getchar();
	return y ? -x : x;
}
inline void add(int x,int y,int z)
{
	e[++tot].ne = first[x];
	e[tot].to = y;
	e[tot].v = z;
	first[x] = tot;
}
inline void push(int p,int k)
{
	heap[++tot].ed = k;
	heap[tot].nod = p;
	o[p][k] = 1;
	int now = tot;
	while (now > 1 && judge(heap[now >> 1],heap[now]))
		swap(heap[now],heap[now >> 1]),now >>= 1;
}
inline void pop(int &p,int &k)
{
	p = heap[1].nod;
	k = heap[1].ed;
	o[p][k] = 0;
	heap[1] = heap[tot--];
	int now = 1;
	while (now << 1 <= tot && judge(heap[now],heap[now << 1]) ||
			now << 1 < tot && judge(heap[now],heap[now << 1 | 1]))
	{
		int nxt = now << 1;
		if (nxt < tot && judge(heap[nxt],heap[nxt | 1])) ++nxt;
		swap(heap[now],heap[nxt]),now = nxt;
	}
}
int main()
{
	int n = r(),m = r(),k = r(),s = 1,t = n,x,y,z;
	while (m--) x = r(),y = r(),z = r(),add(x,y,z),add(y,x,z);
	memset(dis,0x7f,sizeof(dis));
	tot = 0;
	dis[s][0] = 0;
	push(s,0);
	while (tot)
	{
		int p,ed;
		pop(p,ed);
		for (int a = first[p],b = e[a].to ; a ; a = e[a].ne,b = e[a].to)
		{
			if (dis[p][ed] + e[a].v < dis[b][ed])
			{
				dis[b][ed] = dis[p][ed] + e[a].v;
				if (!o[b][ed]) push(b,ed);
			}
			if (ed == k) continue;
			if (dis[b][ed + 1] > dis[p][ed])
			{
				dis[b][ed + 1] = dis[p][ed];
				if (!o[b][ed + 1]) push(b,ed + 1);
			}
		}
	}
	printf("%d\n",dis[t][k]);
	return 0;
}

 

双倍经验 这题

三倍经验 开通我校会员尊享

七、永磁同步电机矢量控制(FOC)—MTPA控制及Simulink仿真 前面几节的内容已经完成Id=0控制策略的理论和仿真以及双闭环PI参数整定。在接下来几节中,将陆续讲解MTPA、弱磁控制等内容。 阅读详情

相关推荐

OpenCV图像去畸变实战指南:从原理到参数调优(附完整代码与效果对比)

本文深入解析了OpenCV图像去畸变的原理与实战技巧,详细对比了标准透视、鱼眼及全能型omnidir三种校正函数的核心参数调优方法。通过分析alpha、balance、centerX/Y及focalScale四大参数对输出效果的影响,并结合完整代码与效果对比图,帮助开发者精准校正镜头畸变,提升计算机视觉任务精度。

weixin_29046611的博客 340

图论学习笔记 - 分层图最短路问题(以飞行路线为例)

定义 分层图最短路是指在可以进行分层图的图上解决最短路问题。 分层图:可以理解为有多个平行的图。 一般模型是:在一个正常的图上可以进行 k 次决策,对于每次决策,不影响图的结构,只影响目前的状态或代价。一般将决策前的状态和决策后的状态之间连接一条权值为决策代价的边,表示付出该代价后就可以转换状态了。 简单说就是:在图上,有 k 次机会可以直接通过一条边,问起点与终点之间的最短路径。 有两种方法解决分层图最短路问题: 1、建图时直接建成 k+1 层 2、多开一维记录机会信息 具体选哪种依题目数据

haobowen的博客 1651

ESP32-IDF HTTP服务器实战:从零搭建Web控制界面

本文详细介绍了如何在ESP32平台上使用ESP-IDF框架从零搭建HTTP服务器,并创建Web控制界面。内容涵盖环境配置、服务器基础设置、Web页面处理、GPIO控制接口实现及AJAX异步请求处理,帮助开发者快速掌握物联网设备Web控制开发。

efc123456的博客 1063

分层图最短路

文章目录什么是分层图最短路:解决的一般思路:怎么建图:code 什么是分层图最短路: 分层图最短路是指在可以进行分层图的图上解决最短路问题。 一般模型是: 在图上,有k次机会可以直接通过一条边(权值为0),问起点与终点之间的最短路径。 解决的一般思路: 以这个题为例,给出了k次可以免费通过一个点的机会, 我们可以把原来的图垒在一起; ex: k = 1 1 2 3 2 3 4 3 1 2 4 ...

qq_45752133的博客 1228

基于POI-TL实现动态Word模板数据填充(含图表):从需求到落地的完整开发实践

本文聚焦企业级报告生成场景中 “在线编辑模板 + 动态数据填充” 的核心需求,详细阐述基于 POI-TL、OnlyOffice 与 MinIO 的全栈实现方案。通过代码示例拆解模板加载、文字填充、图表匹配渲染(含通过关系 ID 关联图表与段落的关键逻辑)、报告存储全步骤。最终通过技术组合实现业务人员可视化编辑模板、后端高效填充数据的目标,为同类动态 Word 生成需求提供可复用的实践参考。

imHanweihu的博客 1859

保姆级教程:用GMT6.1绘制专业地形起伏图(从数据下载到出图避坑)

本文提供了一份详细的GMT6.1绘制地形起伏图的保姆级教程,从环境搭建到数据下载,再到核心绘图命令解析,帮助用户避开常见错误。特别适合科研人员和地理信息爱好者快速掌握专业地形图的绘制技巧,提升工作效率。

weixin_42549723的博客 275

算法【Dijkstra算法及分层图最短路】

Dijkstra算法:给定一个源点,求解从源点到每个点的最短路径长度。单源最短路径算法。适用范围:有向图、边的权值没有负数。彻底暴力的Dijkstra算法,不讲、时间复杂度太差、无意义。普通堆实现的Dijkstra算法,最普遍、最常用。算法核心过程:节点弹出过就忽略,节点没弹出过,让其它没弹出节点距离变小的记录加入堆。反向索引堆实现的Dijkstra算法,最快速、最极致。普通堆实现的Dijkstra算法,时间复杂度O(m * log m),m为边数。

W_O_Z的博客 1430

开发具有情感分析能力的AI Agent

本文将深入探讨开发具有情感分析能力的AI Agent的各个方面。我们将首先介绍情感分析的基础知识,包括定义、背景和应用领域。接着,我们将详细讲解情感分析的核心概念、数据处理方法和算法原理。随后,文章将展示如何设计情感分析系统架构,并进行项目实战,包括环境安装、源代码实现和案例分析。最后,我们将总结最佳实践和注意事项,为读者提供进一步学习的资源。情感分析(Sentiment Analysis),也称为意见挖掘,是自然语言处理(NLP)的一个分支。

SuperAGI2025 1146

图论之分层图最短路总结 与经典例题

一、分层图 分层图只是建图时有区别,但跑最短路板子都是一样的,正所谓图论最难的就是建图,只要有合适的建图方法,那么问题就很简单了。 分层图是指有很多个平行的图,各个平行的图之间有特殊的连接边。 用分层图的几种情况:1、有k个不同集合的边,将每个集合内的边建成一张图,再建立第k+1个图,是一个虚层,用这个虚层将这k张图连接起来。每次可以通过虚层转移到另一个集合的图中。如例1.小雨坐地铁。2、有k个机会使得走当前此边不花费代价或花费特殊的代价,可以建立k张相同的该图,每张图之间用有边的点连接起来,其代价是0或是

harry12138小白的博客 7960

姿态传感器/陀螺仪之ICM-42670-P应用原理图设计

ICM-42670-P采用LGA-14封装,尺寸为2.5x3x0.76毫米,工作电压范围为1.71V至3.6V,支持I3CSM、I2C和SPI串行通信接口。其设计目标是提供高精度、低功耗和小型化的解决方案,以满足消费类和工业应用的需求。ICM-42670-P是一款由TDK InvenSense推出的高性能六轴MEMS运动追踪传感器,集成了3轴陀螺仪和3轴加速度计,适用于多种应用场景,包括可穿戴设备、游戏控制器、无人机、AR/VR设备等。

corlin6688的博客 1198

组态王与DLT645-2007电能表通讯调试总结

组态王与电力协议DLT 645-2007调试总结 DLT 645-2007是多功能电能表通信协议,该标准由中国电力企业联合会2006年提出,该协议为主-从结构的半双工通信方式。手持单元或其它数据终端为主站,多功能电能表为从站。每个多功能电能表均有各自的地址编码。通信链路的建立与解除均由主站发出的信息帧来控制。帧是传送信息的基本单元,每帧由帧起始符、从站地址域、控制码、数据域长度、数据域、帧信息纵向校验码及帧结束符7个域组成,每部分由若干字节组成,帧格式如图1所示。 1.确定设备地址 地址域由 6 个字节构

逍遥子的博客 1万+

专题·最短路【including Dijkstra, SPFA,Floyd,传递闭包,二维最短路,分层图最短路,最短路计数……

DIj算法,堆优化版本,线段树优化版本; SPFA算法,Floyd算法,传递闭包; 如标题的各种最短路的应用

樱狸✨愿携清风归来处 1万+

【图像去噪】论文精读:FM2S: Self-Supervised Fluorescence Microscopy Denoising With Single Noisy Image

论文题目:FM2S: Self-Supervised Fluorescence Microscopy Denoising With Single Noisy Image —— FM2S:单噪声图像自监督荧光显微镜去噪arXiv 2024!显微图像去噪!通过可视化详细的细胞结构和生物过程,荧光显微镜具有显着先进的生物学研究。然而,由于难以精确建模固有噪声和获取干净图像进行训练,这种图像去噪任务往往面临挑战,这限制了大多数现有方法。在本文中,我们提出了一种有效的。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 408

洛谷 P4009 汽车加油行驶问题 分层图 网络流 最小费用最大流 Dinic+Spfa 最短路

题目链接: https://www.luogu.com.cn/problem/P4009 思路来源博客: https://blog.youkuaiyun.com/qq_45458915/article/details/103630951 思路解释的非常清晰,建议再次查看 算法:1:分层图 网络流 最小费用最大流 Dinic+Spfa 最短路 图解: 1:选择一个n=3的单元来辅助理解思路 ...

aiwo1376301646的博客 432

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

最短路问题

最短路问题

joker822519866的博客 1007

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

最短路练习

每想到一些天地都容纳不下的说法心里就烧起烟霞没去过心上人流浪的白发天涯哪里懂镜月水花。

ZZZS0516的博客 936

最短路问题(小白入门)

带你了解各种最短路算法以及实际解决问题的技巧!!

m0_73709108的博客 1938

[P1073 [NOIP2009 提高组] 最优贸易]「记忆化搜索」或者「分层图最短路」或者「双重SPFA」

P1073 [NOIP2009 提高组] 最优贸易 题目描述: n个城市,m条边,一部分是单向边,一部分是双向边,每个城市的水晶球的价格不一定相同,你可以在任意一个城市购买一个水晶球,再任意一个城市卖出,以此来赚取差价,但你只能进行一次这样的操作,且必须从1号点出发,最终要到达n号点,n个城市可以去任意次,问能赚取的最大的差价是多少 思路1:记忆化搜索 我们必须从1号点出发,到达n号点,我们可以找一个分界点i,在这个分界点之前,我们取其中1号点能到达的最小的值,在这个分界点之后再取能到达n的最大的值,

Suryxin's blogs 238

poj 2763: [JLOI2011]飞行路线(spfa分层图最短路)

2763: [JLOI2011]飞行路线 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 2156 Solved: 818 [Submit][Status][Discuss] Description Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司。该航空公司一共在n个城市设有业务,设这些城市分别标

但行好事,莫问前程. 453

图论4-最短路(I)

三种最短路算法 Floyd 可求出任意两点间最短路,适合小规模稠密图(点数不超过500500500)。 复杂度O(n3)O(n^3)O(n3) 注意:如果nnn超过800800800,且图比较稀疏,可使用nnn次dijkstra代替Floyd。 for(int k=1;k<=n;++k) for(int i=1;i<=n;++i) for(int j=1;j<=n;++j) dis[i][j]=min(dis[i][j],dis[i][k]+

周世正的博客 424

【NOIP2009】最优贸易(分层图,或双向最短路)

最好用分层图。

蒲公英殇的博客 215

牛客 小雨坐地铁 (分层图+最短路)

分层图+最短路 小雨坐地铁 分层图+最短路题目分析spfa+链式前向星dijkstra+链式前向星 题目分析 ps:刚刚开始看这个题目的时候,看完一遍不理解,再看一遍还是不理解,于是冷静一波~发现这个题目真的很复杂!!! 题目是求最短路,最短路可以参考我的另外一篇博客快速理解最短路径算法 对于这个题目而言,我们需要去做出一个分层图出来,因为地铁线之间有交叉,所以在存储完地铁线之后,我们需要对建立一个超级源点,并且规定,从地铁站到超级源点需要不需要花费,而从超级源点到地铁站需要花费,这就相当于一个中转站.

少年白马 780

最短路总结

本文总结了五种最短路算法的核心思想及特性:Dijkstra算法适用于非负权图,采用贪心策略;Bellman-Ford和SPFA能处理负权边,后者是前者的队列优化版;Floyd基于动态规划解决多源最短路;Johnson算法通过SPFA检测负环后使用Dijkstra。文章还提供了各算法的C++代码模板,包括Dijkstra的优先队列实现、SPFA的队列优化、Floyd的三重循环以及Johnson算法的完整流程。这些算法在不同场景下各有优劣,需根据具体问题选择。

这里是小鸽子娅的博客喵~ 423

[JLOI2011]飞行路线 分层图最短路

裸的分层图最短路,SPFA+SLF解决  bitset数组下标开反 RE了半天。。。。   #include #include #include #include #include #include #define MAXN 210000 #define FR first #define SC second #define MP make_pair #define INF 1

AcrossTheSky的专栏 1130

Bzoj 2763: [JLOI2011]飞行路线 拆点,分层图,最短路,SPFA

2763: [JLOI2011]飞行路线 Time Limit:10 SecMemory Limit:128 MBSubmit:1694Solved:635[Submit][Status][Discuss] Description Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司。该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一...

weixin_34367257的博客 113

浅谈分层图最短路问题

分层图最短路问题,就是把一个图分层然后跑最短路(废话)。 分层图最短路问题关键在于怎么分层,分层通常是起到对题中某个条件的限定作用,这里我们结合例题看看。 Luogu P4568飞行路线 题意大致是给一个带权无向图,允许k次飞行费用为0,求最小费用。 这里就是将图分成k层,每次从第i-1层到第i层相当于是走了一条免费的飞行路线。然后如果从第i层回到第i-1层就是一个“后悔”的过程...

weixin_30684743的博客 258
上一篇: 动态树 之 Link-Cut Tree (LCT)
下一篇: 点分治 模板 + 详解
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值