P1744 采购特价商品【洛谷算法习题】

发布时间:2026/9/16 8:04:31

P1744 采购特价商品【洛谷算法习题】 P1744 采购特价商品网页链接P1744 采购特价商品题目背景《爱与愁的故事第三弹·shopping》第一章。题目描述中山路店山店海成了购物狂爱与愁大神的“不归之路”。中山路上有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的最短路径长度。输入输出样例 #1输入 #15 0 0 2 0 2 2 0 2 3 1 5 1 2 1 3 1 4 2 5 3 5 1 5输出 #13.41说明/提示对于100 % 100 \%100%的数据2 ≤ n ≤ 100 2 \le n \leq 1002≤n≤1001 ≤ i , j , s , t ≤ n 1 \le i, j, s, t \le n1≤i,j,s,t≤n1 ≤ m ≤ 1000 1 \le m \leq 10001≤m≤1000。解题思路本题是图论最短路的经典应用。将每家店看作图中的一个节点若两家店之间有通路则在这两个节点之间连一条无向边边权为两点之间的欧几里得距离。问题转化为求从起点店s ss到目标店t tt的最短路径长度。由于节点数n ≤ 100 n \le 100n≤100边数m ≤ 1000 m \le 1000m≤1000可以使用 Floyd 算法求出所有节点对之间的最短距离然后直接输出s ss到t tt的距离。1. 问题等价转化输入给出n nn家店的坐标( x i , y i ) (x_i, y_i)(xi​,yi​)以及m mm条通路。对于每条通路( i , j ) (i, j)(i,j)计算两点间的直线距离d ( i , j ) ( x i − x j ) 2 ( y i − y j ) 2 d(i,j) \sqrt{(x_i - x_j)^2 (y_i - y_j)^2}d(i,j)(xi​−xj​)2(yi​−yj​)2​由于是无向通路所以d ( i , j ) d ( j , i ) d(i,j) d(j,i)d(i,j)d(j,i)。目标是求从s ss到t tt的最短路径长度。图中有n ≤ 100 n \le 100n≤100个节点边权非负适合使用 Floyd 算法进行全源最短路计算。2. 算法实现初始化距离矩阵创建一个n × n n \times nn×n的二维数组d所有元素初始化为一个极大值如2020040222 20200402222020040222表示不可达。读入坐标将每家店的横纵坐标分别存入X[i]和Y[i]。读入通路并建边对于每条通路( u , v ) (u, v)(u,v)计算两点间的欧几里得距离赋值给d[u][v]和d[v][u]。读入起点和终点得到s和t。Floyd 算法求最短路三重循环枚举中间点k、起点i、终点j。状态转移d[i][j] min(d[i][j], d[i][k] d[k][j])。输出结果输出d[s][t]保留两位小数。3. 复杂度分析时间复杂度Floyd 算法需要三重循环复杂度为O ( n 3 ) O(n^3)O(n3)。n ≤ 100 n \le 100n≤100运算量约10 6 10^6106非常快。空间复杂度需要存储n × n n \times nn×n的距离矩阵复杂度O ( n 2 ) O(n^2)O(n2)空间消耗很小。总结将商店和通路抽象为带权无向图边权为两点间的欧几里得距离。由于节点数很少直接使用 Floyd 算法求出所有点对的最短路径最后输出起点到终点的距离即可。该方法简单直观代码实现容易适合本题数据规模。代码简要说明d[N][N]距离矩阵初始化为极大值。X[N], Y[N]存储每个店的坐标。读入n nn后初始化距离矩阵读入坐标读入m mm条通路计算距离并更新矩阵。读入s , t s, ts,t。三重循环执行 Floyd 算法更新所有点对的最短距离。printf(%.2lf, d[s][t])输出结果保留两位小数。代码内容#includebits/stdc.husingnamespacestd;#defineendl\ntypedeflonglongll;typedefunsignedlonglongull;typedefvectorvectorllvvt;typedefpairll,llpll;constll N1100;constll INF1e18;constll M1e610;constll mod1e97;ll n,m,s,t;ll u,v;doubled[N][N];doubleX[N],Y[N];intmain(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);cinn;for(ll i1;in;i)for(ll j1;jn;j)d[i][j]2020040222;for(ll i1;in;i)cinX[i]Y[i];cinm;for(ll i1;im;i){cinuv;d[u][v]d[v][u]sqrt((X[u]-X[v])*(X[u]-X[v])(Y[u]-Y[v])*(Y[u]-Y[v]));}cinst;for(ll k1;kn;k)for(ll i1;in;i)for(ll j1;jn;j)d[i][j]min(d[i][j],d[i][k]d[k][j]);printf(%.2lf,d[s][t]);return0;}
延伸阅读

更多相关文章

2026/9/16 7:59:31

StarRocks 存算分离集群 Compaction 管理与监控完全指南

StarRocks 存算分离集群 Compaction 管理与监控完全指南 【免费下载链接】starrocks The worlds fastest open query engine for sub-second analytics both on and off the data lakehouse. With the flexibility to support nearly any scenario, StarRocks provides best-in…

2026/9/16 7:59:31

西门子PCS7自定义单位功能实现与应用

1. 西门子PCS7自定义单位功能概述在工业自动化控制系统中,单位标准化是确保数据一致性和可读性的关键要素。西门子PCS7作为流程工业领域的主流DCS系统,其内置的标准工程单位库(如℃、MPa、m/h等)已覆盖大多数常规应用场景。但在实…

2026/9/16 8:54:41

Linux桌面应用闪退问题解决笔记(Electron 通用)

一、哪些软件会闪退 Linux 下所有 Electron / Chromium 内核软件极易闪退: QQ音乐(deb 版)Linux QQLinux 微信部分新版客户端、IDE 二、闪退根本原因 Linux Mint / Ubuntu 系列系统对 Chromium 沙箱(sandbox) 权限…

2026/9/16 8:54:41

基于S7-200 PLC与组态王的快件分拣系统设计与实现

1. 项目概述:基于S7-200 PLC与组态王的快件分拣系统快件分拣系统是现代物流仓储的核心环节,直接决定了分拣效率和准确率。这个项目采用西门子S7-200 PLC作为主控制器,配合组态王软件实现可视化监控,构建了一套完整的自动化分拣解决…

2026/9/16 8:54:41

ET框架Google.Protobuf入门:协议定义、代码生成与消息序列化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/16 8:54:41

同代码同数据同资源,任务耗时差30倍?从系统排查到根因定位

“同样的代码、同样的数据、还申请了同样规格的资源,为什么任务耗时差了 30 倍?”这个问题我刚工作第二年就撞上了。当时是同一个调度系统里跑同一份数据处理脚本,昨天 15 分钟跑完,今天要 7 个小时,重跑一次还是 6 小…

2026/9/16 8:54:41

电话里的“嘟嘟”声是谁发出的?详解回铃音与信令机制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/16 8:49:37

React Native与鸿蒙跨平台卡片组件开发实践

1. React Native与鸿蒙跨平台开发概述在移动应用开发领域,跨平台技术已经成为提升开发效率的关键解决方案。React Native作为Facebook推出的跨平台框架,允许开发者使用JavaScript和React构建原生应用体验。而鸿蒙系统(HarmonyOS)作…

2026/9/15 4:54:30

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/16 0:04:09

PHP源码部署实战:从环境配置到运行情侣游戏全攻略

简介:这是一套面向情侣互动场景的PHP完整源码,集成情侣飞行棋、真心话大冒险、情趣骰子等玩法,并内置完整分销制度,可自定义多种返佣比例,源码完全开源无加密,支持微信无感自动授权登录与第三方授权&#x…

2026/9/15 14:22:53

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/15 21:31:11

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/15 11:42:23

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码