当前位置: 首页 > news >正文

最短路 - ## 游艇租用

题目描述

长江游艇俱乐部在长江上设置了 \(n\) 个游艇出租站 \(1,2,\cdots,n\)。游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇。游艇出租站 \(i\) 到游艇出租站 \(j\) 之间的租金为 \(r(i,j)\)\(1 \le i < j \le n\))。试设计一个算法,计算出从游艇出租站 \(1\) 到游艇出租站 \(n\) 所需的最少租金 。

输入格式

第一行中包含一个正整数 \(n\),表示有 \(n\) 个游艇出租站。
接下来的 \(n-1\) 行是一个半矩阵 \(r(i,j)\)\(1 \le i < j \le n\))。

  • \(1\) 行包含 \(n-1\) 个数,分别表示 \(r(1,2), r(1,3), \dots, r(1,n)\)
  • \(2\) 行包含 \(n-2\) 个数,分别表示 \(r(2,3), r(2,4), \dots, r(2,n)\)
  • 以此类推,最后一行(第 \(n-1\) 行)包含 \(1\) 个数,表示 \(r(n-1, n)\)

输出格式

输出一个整数,即从游艇出租站 \(1\) 到游艇出租站 \(n\) 所需的最少租金 。

样例数据

输入 #1

3
5 15
7

输出 #1

12

样例解释: 有 3 个游艇出租站。根据输入可知:从站 1 到站 2 的租金为 5,从站 1 到站 3 的租金为 15,从站 2 到站 3 的租金为 7。最省钱的路线是先从 1 到 2(花费 5),再从 2 到 3(花费 7),总租金为 \(5+7=12\)

💡 数据范围

  • \(n \le 200\)
  • 保证计算过程中任何时刻数值都不超过 \(10^6\)

题解

2.1 Dijkstra 算法(适用于非负权图)

Dijkstra 算法是求解非负权图单源最短路的经典算法。其核心思想是贪心:每次从未确定最短路的顶点中选取距离源点最近的点,然后松弛它的邻接边。

算法步骤

  1. 初始化:dist[source] = 0,其余顶点的 dist 为无穷大。用一个集合(或优先队列)来维护未访问的顶点。
  2. 重复以下操作,直到所有顶点都被访问:
  • 从尚未确定最短路的顶点中选出 dist 最小的顶点 u
  • u 标记为已确定最短路。
  • 对于 u 的每个邻接顶点 v,如果 dist[u] + w(u,v) < dist[v],则更新 dist[v]

复杂度分析

  • 朴素实现:每次找最小 dist 需要 O(V),总复杂度 O(V²)。
  • 使用优先队列(二叉堆)优化:每次插入和更新操作 O(log V),总复杂度 O((V+E) log V),适合稀疏图。
#include <bits/stdc++.h>
using namespace std;
const int INF=1e9;
int n,m,w[202][202],dist[202];
bool Flg[202];int main() {scanf("%d", &n);memset(w,0x3f,sizeof(w));for (int i=1;i<n;i++)for (int j=i+1;j<=n;j++)cin>>w[i][j];for (int i=1;i<=n;i++) dist[i]=INF;dist[1]=0;for (int k=1;k<n;k++) {int Min=INF,id=0;for (int i=1;i<=n;i++)if (!Flg[i] && dist[i]<Min) id=i,Min=dist[i];Flg[id]=1;for (int i=1;i<=n;i++)if (!Flg[i] && dist[i]>dist[id]+w[id][i])dist[i]=dist[id]+w[id][i];}cout<<dist[n]<<endl;return 0;
}
http://www.jsqmd.com/news/429228/

相关文章:

  • AI提示工程架构师必备:提示系统日志分析与问题定位实战指南
  • P8306 【模板】字典树
  • DevOps智能化转型:效率提升新思路
  • 医美机构如何在豆包做广告,有专业服务商可以合作吗? - 品牌2026
  • 医美机构如何在豆包上获得自然推荐,有专业服务商可以合作吗? - 品牌2026
  • 大数据存储必知必会:5种主流分布式文件系统对比
  • CF2053I1
  • TDengine IDMP 数据可视化——组态面板
  • Task05:树
  • WinForms + OpenTK (OpenGL 3.3) 粒子动画实测:100 万粒子,流畅无压力 - 行人-
  • 3分钟搞懂深度学习AI:毁掉AI的广播机制陷阱
  • 云原生数据仓库建设:基于Snowflake的最佳实践
  • RTTI对性能的影响
  • CF2195B题解
  • 无状态和有状态应用部署
  • Three.js + WebGL 粒子动画实测:10 万粒子,流畅无压力 - 行人-
  • 文本生成在智能客服系统中的实战应用
  • 制造业如何做豆包广告推广,有相关的服务商吗? - 品牌2026
  • 豆包广告怎么做?应该联系哪家公司? - 品牌2026
  • C# 实现多种形式的3D翻转页面效果 - 行人-
  • 技术负责人的述职报告应该怎么写?
  • AI Agent框架探秘:拆解 OpenHands(10)--- Runtime
  • Kimi/Minimax Claw智能体爆发:Agent编排与落地实战
  • 别再乱选!2026全案装修性价比之王大揭秘 - 品牌测评鉴赏家
  • 豆包可以投放广告吗?应该联系哪家公司? - 品牌2026
  • 深耕装修圈5年实测|2026全案装修哪家服务好?避坑不花冤枉钱 - 品牌测评鉴赏家
  • Markdown 链接
  • 飘屏的火焰: DirectX 12 + ComputeSharp + Win32 - 行人-
  • 2026装修不踩坑!专业全案装修公司优选指南 - 品牌测评鉴赏家
  • 2026年国冠锻造:精工锻造、一体化制造,服务近三百家伙伴 - 速递信息