news 2026/4/30 10:49:11

打卡信奥刷题(3189)用C++实现信奥题 P8074 [COCI 2009/2010 #7] SVEMIR

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
打卡信奥刷题(3189)用C++实现信奥题 P8074 [COCI 2009/2010 #7] SVEMIR

P8074 [COCI 2009/2010 #7] SVEMIR

题目描述

太空帝国要通过建造隧道来联通它的N NN个星球。

每个星球用三维坐标( x i , y i , z i ) (x_i,y_i,z_i)(xi,yi,zi)来表示,而在两个星球A , B A,BA,B之间建造隧道的价格为min ⁡ { ∣ x A − x B ∣ , ∣ y A − y B ∣ , ∣ z A − z B ∣ } \min\{|x_A-x_B|,|y_A-y_B|,|z_A-z_B|\}min{xAxB,yAyB,zAzB}

现要建造N − 1 N-1N1条隧道使得所有的星球都能直接或间接相连。求完成该任务所需的最小总价。

输入格式

第一行,一个整数N NN

接下来的N NN行,每行三个整数x i , y i , z i x_i,y_i,z_ixi,yi,zi,表示第i ii个星球的坐标。

数据保证不存在两个具有相同坐标的星球。

输出格式

输出所需的最小总价。

输入输出样例 #1

输入 #1

2 1 5 10 7 8 2

输出 #1

3

输入输出样例 #2

输入 #2

3 -1 -1 -1 5 5 5 10 10 10

输出 #2

11

输入输出样例 #3

输入 #3

5 11 -15 -15 14 -5 -15 -1 -1 -5 10 -4 -1 19 -4 19

输出 #3

4

说明/提示

【数据规模与约定】

  • 对于100 % 100\%100%的数据,1 ≤ N ≤ 10 5 1 \le N \le 10^51N105− 10 9 ≤ x i , y i , z i ≤ 10 9 -10^9 \le x_i,y_i,z_i \le 10^9109xi,yi,zi109

【提示与说明】

题目译自 COCI 2009-2010 CONTEST #7Task 4 SVEMIR

本题分值按 COCI 原题设置,满分100 100100

C++实现

#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;constintN=100005;structPoint{intx,y,z;}a[N];structEdge{intu,v,w;booloperator<(constEdge&x)const{returnw<x.w;}};vector<Edge>E;intfa[N],id[N];intfind(intu){returnu==fa[u]?u:fa[u]=find(fa[u]);}llkruskal(intn){for(inti=1;i<=n;i++)fa[i]=i;sort(E.begin(),E.end());ll ans=0,cnt=0;for(auto[u,v,w]:E){if(cnt==n-1)break;intx=find(u),y=find(v);if(x==y)continue;fa[x]=y;ans+=w;cnt++;}returnans;}voidadd(intu,intv){intdx=abs(a[u].x-a[v].x),dy=abs(a[u].y-a[v].y),dz=abs(a[u].z-a[v].z);E.push_back({u,v,min({dx,dy,dz})});}intmain(){ios::sync_with_stdio(false);cin.tie(nullptr);intn;cin>>n;for(inti=1;i<=n;i++){cin>>a[i].x>>a[i].y>>a[i].z;id[i]=i;}sort(id+1,id+n+1,[](intu,intv){returna[u].x<a[v].x;});for(inti=1;i<n;i++)add(id[i],id[i+1]);sort(id+1,id+n+1,[](intu,intv){returna[u].y<a[v].y;});for(inti=1;i<n;i++)add(id[i],id[i+1]);sort(id+1,id+n+1,[](intu,intv){returna[u].z<a[v].z;});for(inti=1;i<n;i++)add(id[i],id[i+1]);cout<<kruskal(n)<<'\n';return0;}

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 10:49:11

深入解析Umi-OCR分布式架构:如何实现高性能批量处理与智能优化

深入解析Umi-OCR分布式架构&#xff1a;如何实现高性能批量处理与智能优化 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片&#xff0c;PDF文档识别&#xff0c;排除水印/页眉页脚&#xff0c;扫描/生成二维码。内置…

作者头像 李华
网站建设 2026/4/30 10:47:17

WechatDecrypt:微信聊天记录解密技术全解析

WechatDecrypt&#xff1a;微信聊天记录解密技术全解析 【免费下载链接】WechatDecrypt 微信消息解密工具 项目地址: https://gitcode.com/gh_mirrors/we/WechatDecrypt 你是否曾经因为误删了重要的微信聊天记录而懊恼不已&#xff1f;或者想要备份那些珍贵的对话却无从…

作者头像 李华
网站建设 2026/4/30 10:46:44

终极指南:3步使用TegraRcmGUI轻松为Nintendo Switch注入Payload

终极指南&#xff1a;3步使用TegraRcmGUI轻松为Nintendo Switch注入Payload 【免费下载链接】TegraRcmGUI C GUI for TegraRcmSmash (Fuse Gele exploit for Nintendo Switch) 项目地址: https://gitcode.com/gh_mirrors/te/TegraRcmGUI TegraRcmGUI是一款专为Nintendo …

作者头像 李华
网站建设 2026/4/30 10:44:42

5分钟完成APA第7版引用格式:Word样式一键安装终极指南

5分钟完成APA第7版引用格式&#xff1a;Word样式一键安装终极指南 【免费下载链接】APA-7th-Edition Microsoft Word XSD for generating APA 7th edition references 项目地址: https://gitcode.com/gh_mirrors/ap/APA-7th-Edition 在学术写作领域&#xff0c;规范的参…

作者头像 李华
网站建设 2026/4/30 10:39:30

AngularJS UI Bootstrap终极指南:3步实现表格分页+排序+筛选

AngularJS UI Bootstrap终极指南&#xff1a;3步实现表格分页排序筛选 【免费下载链接】bootstrap PLEASE READ THE PROJECT STATUS BELOW. Native AngularJS (Angular) directives for Bootstrap. Smaller footprint (20kB gzipped), no 3rd party JS dependencies (jQuery, b…

作者头像 李华