题解:洛谷 P1744 采购特价商品
本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。欢迎大家订阅我的专栏算法题解C与Python实现附上汇总贴算法竞赛备考冲刺必刷题C | 汇总【题目来源】洛谷P1744 采购特价商品 - 洛谷【题目描述】中山路店山店海成了购物狂爱与愁大神的“不归之路”。中山路上有n nnn ≤ 100 n \leq 100n≤100家店每家店的坐标均在− 10000 -10000−10000至10000 1000010000之间。其中的m mm家店之间有通路。若有通路则表示可以从一家店走到另一家店通路的距离为两点间的直线距离。现在爱与愁大神要找出从一家店到另一家店之间的最短距离。你能帮爱与愁大神算出吗【输入】共n m 3 nm3nm3行第一行整数n nn。接下来n nn行每行两个整数x xx和y yy描述了一家店的坐标。接下来一行整数m mm。接下来m mm行每行描述一条通路由两个整数i ii和j jj组成表示第i ii家店和第j jj家店之间有通路。接下来一行两个整数s ss和t tt分别表示原点和目标店。【输出】仅一行一个实数保留两位小数表示从s ss到t tt的最短路径长度。【输入样例】5 0 0 2 0 2 2 0 2 3 1 5 1 2 1 3 1 4 2 5 3 5 1 5【输出样例】3.41【核心思想】问题分析给定n nn家店的平面坐标( x i , y i ) (x_i, y_i)(xi​,yi​)和m mm条无向通路每条通路的边权为两点间的欧几里得距离。求从起点s ss到终点t tt的最短路径长度。这是一个多源最短路径问题由于n ≤ 100 n \leq 100n≤100规模较小适合使用Floyd-Warshall算法直接求出所有点对之间的最短距离。算法选择Floyd-Warshall 算法通过动态规划思想枚举中间点k kk逐步松弛所有点对之间的最短距离欧几里得距离直接通路的边权由坐标通过( x i − x j ) 2 ( y i − y j ) 2 \sqrt{(x_i-x_j)^2 (y_i-y_j)^2}(xi​−xj​)2(yi​−yj​)2​计算关键步骤初始化读取n nn店铺数、n nn个坐标( x i , y i ) (x_i, y_i)(xi​,yi​)、m mm通路数建图读取m mm条通路( u , v ) (u, v)(u,v)建立无向邻接矩阵g [ u ] [ v ] g [ v ] [ u ] 1 g[u][v] g[v][u] 1g[u][v]g[v][u]1初始化距离矩阵d p [ i ] [ j ] dp[i][j]dp[i][j]d p [ i ] [ i ] 0 dp[i][i] 0dp[i][i]0自己到自己为0 00若g [ i ] [ j ] 1 g[i][j] 1g[i][j]1则d p [ i ] [ j ] c a l c ( i , j ) dp[i][j] calc(i, j)dp[i][j]calc(i,j)欧几里得距离其余d p [ i ] [ j ] ∞ dp[i][j] \inftydp[i][j]∞不可达Floyd 三重循环松弛枚举中间点k kk1 11到n nn枚举起点i ii1 11到n nn枚举终点j jj1 11到n nn松弛操作若d p [ i ] [ j ] d p [ i ] [ k ] d p [ k ] [ j ] dp[i][j] dp[i][k] dp[k][j]dp[i][j]dp[i][k]dp[k][j]则更新d p [ i ] [ j ] d p [ i ] [ k ] d p [ k ] [ j ] dp[i][j] dp[i][k] dp[k][j]dp[i][j]dp[i][k]dp[k][j]输出答案d p [ s ] [ t ] dp[s][t]dp[s][t]保留两位小数时间/空间复杂度时间复杂度O ( n 3 ) O(n^3)O(n3)三重循环n ≤ 100 n \leq 100n≤100时完全可接受空间复杂度O ( n 2 ) O(n^2)O(n2)存储d p dpdp距离矩阵Floyd 的核心思想动态规划思想d p [ k ] [ i ] [ j ] dp[k][i][j]dp[k][i][j]表示仅使用前k kk个节点作为中间点时i ii到j jj的最短距离通过滚动数组优化为d p [ i ] [ j ] dp[i][j]dp[i][j]松弛原理最短路径的子路径也是最短路径若i → j i \to ji→j经过k kk更短则更新全源最短路径一次计算即可得到任意两点间的最短距离适合频繁查询场景适用场景节点数n ≤ 500 n \leq 500n≤500的稠密图全源最短路径问题或需要多次查询不同起点终点的场景【算法标签】#普及 #Floyd【代码详解】#includebits/stdc.husingnamespacestd;constintN105;// 最大店铺数量intn,m,st,ed;// n: 店铺数量, m: 通路数量, st: 起点, ed: 终点intx[N],y[N];// x[i], y[i]: 第i家店的坐标doubledp[N][N];// dp[i][j]: 从店铺i到店铺j的最短距离Floyd算法intg[N][N];// g[i][j]: 邻接矩阵g[i][j]1表示i和j之间有通路// 计算两点之间的欧几里得距离直线距离doublecalc(inta,intb){returnsqrt((x[a]-x[b])*(x[a]-x[b])(y[a]-y[b])*(y[a]-y[b]));}intmain(){cinn;// 读入店铺数量// 读入每家店的坐标for(inti1;in;i)cinx[i]y[i];cinm;// 读入通路数量// 读入m条通路while(m--){intu,v;cinuv;g[u][v]1;// u和v之间有通路g[v][u]1;// 无向图双向建边}cinsted;// 读入起点和终点// 初始化Floyd距离矩阵for(inti1;in;i)for(intj1;jn;j)dp[i][j]1e9;// 初始化为无穷大表示不可达// 自己到自己的距离为0for(inti1;in;i)dp[i][i]0;// 对于直接有通路的店铺初始化距离为两点间的直线距离for(inti1;in;i)for(intj1;jn;j)if(g[i][j]1)dp[i][j]calc(i,j);// Floyd-Warshall算法求任意两点间的最短路径 // 枚举中间点kfor(intk1;kn;k){// 枚举起点ifor(inti1;in;i){// 枚举终点jfor(intj1;jn;j){// 松弛操作如果经过k点能缩短i到j的距离则更新if(dp[i][j]dp[i][k]dp[k][j]){dp[i][j]dp[i][k]dp[k][j];}}}}// 输出从起点st到终点ed的最短距离保留两位小数printf(%.2lf,dp[st][ed]);return0;}【运行结果】5 0 0 2 0 2 2 0 2 3 1 5 1 2 1 3 1 4 2 5 3 5 1 5 3.41

相关新闻

木马与蠕虫:数字世界的特洛伊木马与不死毒蛇

木马与蠕虫:数字世界的特洛伊木马与不死毒蛇

🔒 木马与蠕虫:数字世界的特洛伊木马与不死毒蛇紫禁玄科 | 2026年8月10日📌 导读:从2000年横扫全球的"ILOVEYOU"情书蠕虫,到至今仍在暗网活跃的Emotet僵尸网络,木马病毒与蠕虫病毒已造成超过数千…

2026/8/11 11:48:21 阅读更多 →
2026年贵阳做智慧燃气安全监管平台的公司有哪些?

2026年贵阳做智慧燃气安全监管平台的公司有哪些?

在喀斯特地貌上铺开一张燃气管网,从来不是件容易的事。贵阳地处云贵高原,山地丘陵交错,管道顺坡就势、穿山越岭,部分老旧管段还要穿越岩溶发育区域,地质沉降和第三方施工破坏带来的风险点比平原城市更多。冬天气候湿冷…

2026/8/11 11:48:21 阅读更多 →
DDrawCompat:让经典Windows游戏在现代系统重获新生的强力兼容方案

DDrawCompat:让经典Windows游戏在现代系统重获新生的强力兼容方案

DDrawCompat:让经典Windows游戏在现代系统重获新生的强力兼容方案 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_mirror…

2026/8/11 11:48:21 阅读更多 →

最新新闻

AI建站工具解析:零门槛打造专业网站的四大技术支柱

AI建站工具解析:零门槛打造专业网站的四大技术支柱

1. 项目概述:AI建站工具如何让网站搭建零门槛 十年前要搭建一个网站,你得懂HTML/CSS、会配置服务器、还得研究数据库。现在只要会打字,就能用AI建站工具在半小时内做出专业级网站。这不是魔法,而是AI技术带来的生产力革命。 目前…

2026/8/11 12:37:42 阅读更多 →
终极Wand增强工具:免费解锁完整游戏修改体验的终极方案

终极Wand增强工具:免费解锁完整游戏修改体验的终极方案

终极Wand增强工具:免费解锁完整游戏修改体验的终极方案 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer Wand-Enhancer是一款专为Wand&a…

2026/8/11 12:37:42 阅读更多 →
Super IO:用复制粘贴彻底改变你的Blender 3D工作流程

Super IO:用复制粘贴彻底改变你的Blender 3D工作流程

Super IO:用复制粘贴彻底改变你的Blender 3D工作流程 【免费下载链接】super_io blender addon for copy paste import / export 项目地址: https://gitcode.com/gh_mirrors/su/super_io 还在为Blender繁琐的导入导出操作而烦恼吗?每次都要点击&q…

2026/8/11 12:37:42 阅读更多 →
Claude AI助手使用全攻略:从基础到高阶技巧

Claude AI助手使用全攻略:从基础到高阶技巧

1. Claude 使用入门指南 Claude是当前最受关注的AI助手之一,它以强大的自然语言处理能力和友好的交互体验著称。作为一名AI工具深度使用者,我在过去半年里几乎每天都会与Claude进行各种类型的对话交互。今天就来分享我的完整使用心得,从基础操…

2026/8/11 12:37:42 阅读更多 →
OpenAI暂停Astra项目:AI网络安全能力触及“严重”阈值的警示与应对

OpenAI暂停Astra项目:AI网络安全能力触及“严重”阈值的警示与应对

这次我们来看一个关于AI安全能力边界的重要事件。OpenAI近期暂停了其内部项目Astra的部分工作,原因是其网络安全能力可能已经达到了一个“严重”的阈值。这并非一个可以直接部署的本地模型或工具,而是一个关于AI安全治理、能力评估与风险控制的深度技术议…

2026/8/11 12:37:42 阅读更多 →
GPT Mini v5.0实战:Vibe Coding与GPT Codex集成,重塑AI编程工作流

GPT Mini v5.0实战:Vibe Coding与GPT Codex集成,重塑AI编程工作流

最近在尝试将 AI 编程助手深度集成到开发工作流中时,发现市面上的工具要么功能单一,要么配置复杂,难以实现“随时随地、沉浸式”的编码体验。直到体验了 GPT Mini 的最新 v5.0 大版本,其核心的 Vibe Coding 模式和集成的 GPT C…

2026/8/11 12:36:42 阅读更多 →

日新闻

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南 【免费下载链接】video2x A machine learning-based video super resolution and frame interpolation framework. Est. Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trending/vi/v…

2026/8/11 0:00:02 阅读更多 →
前后端分离项目中控制台与接口工具数据差异排查指南

前后端分离项目中控制台与接口工具数据差异排查指南

1. 问题现象解析:控制台与Apifox的数据差异 最近在调试一个前后端分离项目时,遇到了一个典型问题:后端服务在本地开发环境控制台能正常输出查询数据,但通过Apifox测试时却返回空结果。这种"控制台有数据,接口工具…

2026/8/11 0:00:03 阅读更多 →
AI编程实战:从Claude Code踩坑到游戏开发入门

AI编程实战:从Claude Code踩坑到游戏开发入门

1. 从“AI能帮我做游戏”到“AI让我重新学编程”最近身边不少朋友,尤其是一些非技术背景、但对游戏开发有浓厚兴趣的朋友,都在问我同一个问题:“听说现在用Claude Code这种AI编程工具,小白也能做游戏了,是真的吗&#…

2026/8/11 0:00:03 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/11 1:08:05 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/11 1:08:05 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/11 1:08:05 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/10 17:07:33 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/11 1:08:06 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/10 17:07:33 阅读更多 →