UVa 535 Globetrotter
题目描述题目要求计算地球表面上两个城市之间的球面距离大圆距离。地球被视为半径为637863786378km\texttt{km}km的完美球体。输入包含城市列表和查询列表每个查询输出两个城市之间的距离四舍五入到整数若城市不存在则输出Unknown。输入格式城市列表每行一个城市名、纬度−90∘-90^\circ−90∘到90∘90^\circ90∘、经度−180∘-180^\circ−180∘到180∘180^\circ180∘以#结束。查询列表每行两个城市名以# #结束。输出格式对于每个查询输出一行A - B然后输出一行距离保留整数或Unknown。样例输入Ulm 48.700 10.500 Freiburg 47.700 9.500 Philadelphia 39.883 -75.250 SanJose 37.366 -121.933 NorthPole 90 0 SouthPole -90 0 # Ulm Philadelphia Ulm SanJose Freiburg Philadelphia Freiburg SanJose Ulm Freiburg SanJose Philadelphia Ulm LasVegas Ulm Ulm Ulm NorthPole Ulm SouthPole NorthPole SouthPole # #输出Ulm - Philadelphia 6536 km Ulm - SanJose 9367 km Freiburg - Philadelphia 6519 km Freiburg - SanJose 9412 km Ulm - Freiburg 134 km SanJose - Philadelphia 4023 km Ulm - LasVegas Unknown Ulm - Ulm 0 km Ulm - NorthPole 4597 km Ulm - SouthPole 15440 km NorthPole - SouthPole 20037 km题目分析本题的核心是计算球面上两点之间的大圆距离。球面距离公式给定两点的经纬度(ϕ1,λ1)(\phi_1, \lambda_1)(ϕ1​,λ1​)和(ϕ2,λ2)(\phi_2, \lambda_2)(ϕ2​,λ2​)弧度制大圆距离为dR⋅arccos⁡(sin⁡ϕ1sin⁡ϕ2cos⁡ϕ1cos⁡ϕ2cos⁡(λ1−λ2)) d R \cdot \arccos(\sin \phi_1 \sin \phi_2 \cos \phi_1 \cos \phi_2 \cos(\lambda_1 - \lambda_2))dR⋅arccos(sinϕ1​sinϕ2​cosϕ1​cosϕ2​cos(λ1​−λ2​))其中R6378R 6378R6378km\texttt{km}km。该公式在数值不稳定时如两点接近可使用半正矢公式haversine\texttt{haversine}haversine替代。算法步骤读取城市列表存储名称到经纬度转换为弧度的映射。对于每个查询查找两个城市是否存在若任一不存在输出Unknown。否则计算大圆距离四舍五入到整数输出。复杂度分析城市数≤100\le 100≤100查询数未知每次查询O(1)O(1)O(1)。代码实现// Globetrotter// UVa ID: 535// Verdict: Accepted// Submission Date: 2016-08-18// UVa Run Time: 0.000s//// 版权所有C2016邱秋。metaphysis # yeah dot net#includebits/stdc.husingnamespacestd;constdoublePI2*acos(0),R6378.0;doublegcd(doubleR,doubleplat,doubleplong,doubleqlat,doubleqlong){returnR*acos(sin(plat)*sin(qlat)cos(plat)*cos(qlat)*cos(plong-qlong));}doublehaversine(doubleR,doubleplat,doubleplong,doubleqlat,doubleqlong){doubledlonqlong-plong;doubledlatqlat-plat;doubleapow((sin(dlat/2)),2)cos(plat)*cos(qlat)*pow(sin(dlon/2),2);doublec2*atan2(sqrt(a),sqrt(1-a));doubledR*c;returnd;}intmain(){cin.tie(0);cout.tie(0);ios::sync_with_stdio(false);string city,from,to;mapstring,pairdouble,doublelocation;doublelatitude,longtitude;while(cincity,city!#){cinlatitudelongtitude;location[city]make_pair(latitude*PI/180.0,longtitude*PI/180.0);}while(cinfromto,from!#){coutfrom - to\n;if(location.find(from)location.end()||location.find(to)location.end())coutUnknown\n;else{doubleDhaversine(R,location[from].first,location[from].second,location[to].first,location[to].second);coutfixedsetprecision(0)D km\n;}}return0;}

相关新闻

hwinfo硬件信息库:跨平台系统监控的C++现代化解决方案

hwinfo硬件信息库:跨平台系统监控的C++现代化解决方案

hwinfo硬件信息库:跨平台系统监控的C现代化解决方案 【免费下载链接】hwinfo cross platform C library for hardware information (CPU, RAM, GPU, ...) 项目地址: https://gitcode.com/gh_mirrors/hw/hwinfo hwinfo是一款专为C开发者设计的跨平台硬件信息采…

2026/7/4 4:28:11 阅读更多 →
【皇榜科技线路板质量课堂·第30篇】散布图(Scatter Plot):压合温度与剥离强度的关系,看图说话

【皇榜科技线路板质量课堂·第30篇】散布图(Scatter Plot):压合温度与剥离强度的关系,看图说话

一、一个让人挠头的问题皇榜科技的压合车间,最近遇到一个怪事。工艺工程师老何发现,同一款FPC、同一台压机、同一个操作员,压合出来的板子剥离强度时高时低。高的有1.2N/mm,低的只有0.6N/mm,而客户要求不低于0.8N/mm。…

2026/7/4 4:24:10 阅读更多 →
Qt/QML音视频文件原始十六进制查看器

Qt/QML音视频文件原始十六进制查看器

前言 在做音视频工具时,很多问题只看 FFmpeg 解析后的字段并不够。比如: MP4 的 ftyp、moov、mdat 到底在文件哪个位置;WAV/AVI 的 RIFF、fmt 、data 块大小是否正确;某段元数据、魔数或 ASCII 字符串是否真的存在于原始文件里&am…

2026/7/4 4:22:09 阅读更多 →

最新新闻

终极硬盘清理指南:用Krokiet轻松找回丢失的存储空间

终极硬盘清理指南:用Krokiet轻松找回丢失的存储空间

终极硬盘清理指南:用Krokiet轻松找回丢失的存储空间 【免费下载链接】czkawka Multi functional app to find duplicates, empty folders, similar images etc. 项目地址: https://gitcode.com/GitHub_Trending/cz/czkawka 还在为电脑硬盘空间不足而烦恼吗&a…

2026/7/4 5:36:34 阅读更多 →
还在为B站会员购抢票烦恼吗?这款开源工具让你轻松告别手速焦虑

还在为B站会员购抢票烦恼吗?这款开源工具让你轻松告别手速焦虑

还在为B站会员购抢票烦恼吗?这款开源工具让你轻松告别手速焦虑 【免费下载链接】biliTickerBuy b站会员购购票辅助工具 项目地址: https://gitcode.com/GitHub_Trending/bi/biliTickerBuy 你是否曾经守在电脑前,心跳加速地等待B站会员购门票开售&…

2026/7/4 5:36:34 阅读更多 →
如何通过ValveResourceFormat实现高效Source 2资源解析与逆向工程

如何通过ValveResourceFormat实现高效Source 2资源解析与逆向工程

如何通过ValveResourceFormat实现高效Source 2资源解析与逆向工程 【免费下载链接】ValveResourceFormat Source 2 Viewer is an all-in-one tool to browse VPK archives, view, extract, and decompile Source 2 assets, including maps, models, materials, textures, sound…

2026/7/4 5:34:33 阅读更多 →
3步搞定!用yuzu模拟器免费畅玩Switch游戏的终极简单指南

3步搞定!用yuzu模拟器免费畅玩Switch游戏的终极简单指南

3步搞定!用yuzu模拟器免费畅玩Switch游戏的终极简单指南 【免费下载链接】yuzu 任天堂 Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu 想在电脑上免费体验任天堂Switch游戏吗?yuzu模拟器就是你需要的完美解决方案&#x…

2026/7/4 5:32:33 阅读更多 →
CANN/ge ES API生成CMake指南

CANN/ge ES API生成CMake指南

add_es_library Usage Guide 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch…

2026/7/4 5:28:32 阅读更多 →
Mermaid Live Editor:免费在线图表编辑器的完整指南,5分钟快速上手

Mermaid Live Editor:免费在线图表编辑器的完整指南,5分钟快速上手

Mermaid Live Editor:免费在线图表编辑器的完整指南,5分钟快速上手 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending…

2026/7/4 5:28:32 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻