基于nbu oj c语言答案,Just oj 2018 C语言程序设计竞赛(高级组)F:Star(结构体排序+最小生成树)...

Time Limit: 1 s      Memory Limit: 128 MB

Problem Description

31世纪,人类世界的科技已经发展到了空前的高度,星际移民,星际旅游早已经不再是问题。人类已经掌握了开发星系的能力。但是,无论发展到何种地步,资源一直是人们关注的重点。一种新的能源被人类掌握,通过它可以搭建虫洞,实现超光年传输。发展武器。但是虽然这种物质在宇宙海量的存在着,但它对于宇宙的稳定是至关重要的,若过量消耗这种物质,对于宇宙的稳定,星系与星系之间以及星系内部的微妙平衡都会产生巨大的影响。这种物质就是暗物质。

-----《宇宙百科》节选

现在,你所在的星系下有nn个主星球居住着人民。为了星系内部的稳定与和平发展,现在需要在nn个主星球之间建立空间虫洞,众所周知建立虫洞要消耗大量的暗物质,因此,你想要在nn个主星球之间建立联系的情况下尽量少的消耗暗物质。目前你已经知道的是,建立虫洞所需要消耗的暗物质与两个星球之间的距离成正比,比例系数为kk。并且,两个星球之间的距离为空间缩点距离。每个星球有它自己的三维物理坐标。不过,现在有一个好消息。你所在的星系掌握了一项新的技术,空间奇点压缩,简单来说就是降维,但是由于技术发展初期不够成熟,只能压缩一维。并且,任意两个主星球之间都可以选择是否进行空间奇点压缩。现在,你想知道,在这n个主星球之间建立连接需要花费的最少暗物质是多少。

空间缩点距离:设两个nn维坐标a(x1,x2,x3,,,,xn),b(y1,y2,y3,y4,,,yn)a(x1,x2,x3,,,,xn),b(y1,y2,y3,y4,,,yn).设距离为ss,则s=abs((x1+x2+x3+…+xn)−(y1+y2+y3+…+yn))s=abs((x1+x2+x3+…+xn)−(y1+y2+y3+…+yn));

----以上内容纯属瞎扯,请忽略其真实性

Input

第一行两个整数nn和kk。(1≤n≤105,1≤k≤103)(1≤n≤105,1≤k≤103)

接下开nn行,每行三个整数x,y,zx,y,z,其中第ii行表示第ii个星球在星系中的物理坐标。数据保证没有两个星球处于同一个位置上。(1≤x,y,z≤106)(1≤x,y,z≤106)

Output

nn个主星球之间建立连接需要花费的最少暗物质。

Sample Input

3 2

1 1 6

1 2 9

3 20 8

Sample Output

4

Hint

样例说明:

星球1和星球2之间压缩第三维

星球2和星球3之间压缩第二维

题解:通过排序找出不压缩、压缩X、压缩Y、压缩Z四种情况中相邻最近的两点,然后算出压缩后折算的距离并记录下来

然后再次排序,依次枚举直到连接完所有点,连接边长度的总和即为总距离,从而求出所需的暗物质

#include

#include

#include

#define maxn 100007

using namespace std;

int n,k,cnt;

int f[maxn];

struct sta{

int x,y,z,id;

}s[maxn];

struct P{

int st,ed,dis;

bool operator

return dis

}

}p[maxn*4];

bool xyz(sta a,sta b){

return a.x+a.y+a.z

}

bool xy(sta a,sta b){

return a.x+a.y

}

bool yz(sta a,sta b){

return a.y+a.z

}

bool xz(sta a,sta b){

return a.x+a.z

}

void init()

{

cnt=0;

sort(s,s+n,xyz);

for(int i=1;i

p[cnt++]={s[i].id,s[i-1].id,s[i].x+s[i].y+s[i].z-(s[i-1].x+s[i-1].y+s[i-1].z)};

sort(s,s+n,xy);

for(int i=1;i

p[cnt++]={s[i].id,s[i-1].id,s[i].x+s[i].y-(s[i-1].x+s[i-1].y)};

sort(s,s+n,yz);

for(int i=1;i

p[cnt++]={s[i].id,s[i-1].id,s[i].y+s[i].z-(s[i-1].y+s[i-1].z)};

sort(s,s+n,xz);

for(int i=1;i

p[cnt++]={s[i].id,s[i-1].id,s[i].x+s[i].z-(s[i-1].x+s[i-1].z)};

sort(p,p+cnt);

}

int find(int x){

return f[x]=(x==f[x]?x:find(f[x]));

}

void kruskal()//找寻n个点连接的n-1条边的最小和(最小生成树)

{

for(int i=0;i<=n;i++)

f[i]=i;

int ans=0,num=n-1;//n-1条树枝

for(int i=0;i

{

int a=find(p[i].st);

int b=find(p[i].ed);

if(a!=b){

f[a]=b;

num--;

ans+=p[i].dis;

}

}

printf("%d\n",ans*k);

}

int main()

{

scanf("%d%d",&n,&k);

for(int i=0;i

scanf("%d%d%d",&s[i].x,&s[i].y,&s[i].z),s[i].id=i+1;

init();

kruskal();

return 0;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356654.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

与JBoss BPM Travel Agency更新了现代BPM数据集成

不久前&#xff0c;我们启动了一个规模较大的JBoss Travel Agency演示项目&#xff0c;以展示JBoss BPM Suite的一些更有趣的功能。 我们提供了一系列视频 &#xff0c;不仅向您展示了如何安装它&#xff0c;项目中各种规则和流程工件的含义&#xff0c;还向您介绍了在实际使用…

c语言中坐标xoy轴在哪里,用C语言在linux下获取鼠标指针的相对位置

1. 关于"/dev/input/mice"相信很多人都用过Linux&#xff0c;也许你发现不管是在X-window下面&#xff0c;还是在Console下面&#xff0c;鼠标都是可以操作的。那么你有没有考虑过这些鼠标都是从哪来的&#xff1f;不错&#xff01;他们都是从"/dev/input/mice&…

codeblock不能调试

问题&#xff1a;codeblock 不能调试&#xff0c;如下图&#xff1a; 解决方法&#xff1a; 首先&#xff0c;项目的保存路径不能是中文路径。 其次&#xff0c;必须创建工程。 最后&#xff0c;build选项里select target选成debug codeblock如何创建工程&#xff1a;http://j…

与詹金斯一起将GitLab中的Gradle项目发布到Artifactory

我将详细展示如何定期构建您的项目&#xff0c;然后如何进行发布。 它涉及许多工具的协作&#xff0c;我发现这些工具难以正确设置&#xff0c;这就是我编写此代码的原因。 目标 我将向您展示如何实现以下两种方案。 第一个是如何进行常规开发的非发行版&#xff1a; 实现一些…

比较排序算法的时间复杂度 c语言,c语言四种排序算法时间复杂度比较(10页)-原创力文档...

1、方案设计&#xff1a;我这次实验通过随机生成300&#xff10;0个随机数&#xff0c;把随机数存到数组中,用这同一组随机数据分别进行四种排序&#xff0c;直接插入排序、直接选择排序、冒泡排序和快速排序。还通过了调用txt文件把运算所需时间导出&#xff0c;分别输出各个算…

三维漫游的实现

一、本文主要是展示一个demo&#xff0c;实现的是画一个三维的立方体&#xff0c;通过滑动屏幕来旋转方向&#xff0c;上下左右来移动。直接上代码&#xff1a; MainActivity&#xff1a;package com.example.zp.a3dword;import android.graphics.Bitmap;import android.graphi…

MySQL JDBC驱动程序如何处理准备好的语句

准备的语句类型 在研究《 高性能Java持久性》一书中的“ 语句缓存”一章时&#xff0c;我有机会比较了Oracle&#xff0c;SQL Server&#xff0c;PostgreSQL和MySQL处理预准备语句的方式。 感谢Jess Balint &#xff08;MySQL JDBC驱动程序贡献者&#xff09;&#xff0c;他在…

Nodejs学习(三)-安装nodejs supervisor,提高点效率吧。

安装好了express准备写项目&#xff0c;可是发现随便改一下js都要使用npm start重新启动才能生效&#xff0c;这个很不好&#xff0c;搜索一下发现有这么一个模块supervisor。那就安装一下吧。 1.安装&#xff0c;这个必须是全局安装那就开始吧。 npm -g install supervisor 设…

网络语言不c,哪些网络用语不文明?

满意答案林昨末sk2013.02.26采纳率&#xff1a;47% 等级&#xff1a;11已帮助&#xff1a;8049人Q1. 你认为在网络上出现的不文明用语情况_B___&#xff1f;A.是人们宣泄情绪的一种重要方式 B.是当今社会的一个缩影&#xff0c;没有办法C.不应当提倡&#xff0c;应加大管理力…

android 无限旋转动画,android ——不停旋转动画

xml文件android:fromDegrees"359"android:toDegrees"0"android:duration"1000"android:repeatCount"-1"android:pivotX"50%"android:pivotY"50%"/>代码/开始旋转/public voidstartRotateAnimation(View view, …

九章算法强化班 - 课程大纲

第1章 FLAG算法面试难度提高&#xff1f;如何准备&#xff1f; 各类IT企业的面试算法难度及风格 如何解决中等难度以上的算法题 如果解决follow up问题 Two sum   1. Two sum follow up I   2. Two sum follow up II - Triangle count Kth largest element   1. 第…

JavaOne演讲者选择了您不应该错过的10个会话

确保您的会议安排中包含这些JavaOne会话 JavaOne 2015从这个星期日开始&#xff0c;数百个会话同时进行&#xff0c;因此很难筛选所有会话并选择要参加的会话。 这就是为什么我们邀请5位我们最喜欢的JavaOne发言人让我们了解他们的会议&#xff0c;并选择他们最期待的会议。 好…

谷歌发布最新版安卓Android,谷歌正式除名华为,安卓12华为首发无望,但鸿蒙将迎难顶上!...

原标题&#xff1a;谷歌正式"除名"华为&#xff0c;安卓12华为首发无望&#xff0c;但鸿蒙将迎难顶上&#xff01;前几天谷歌正式发布了新一代的安卓12系统。这也是安卓的第十二个大更新版本&#xff0c;从安卓1.0发布的2008年算起&#xff0c;安卓系统已经走过13个年…

android sd卡 格式化 rom,Android开发之获取SD卡及手机ROM容量的方法

本文实例讲述了Android获取SD卡及手机ROM容量的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;这里通过一个简单的小例子&#xff0c;来获取SD卡的容量和手机ROM的容量&#xff0c;代码如下&#xff1a;package com.urovo.sdcardspace;import java.io.File;impor…

未知的生成错误 因为没有预加载,所以无法解析程序集 GalaSoft.MvvmLight

使用wpf开发时&#xff0c;在ViewModel中引用了DevExpress注册的GalaSoft.MvvmLight命名空间&#xff0c;使用其ViewModelBase&#xff0c;在View界面中绑定事件时出现错误&#xff1a; 错误 13 未知的生成错误“因为没有预加载&#xff0c;所以无法解析程序集“GalaSoft.MvvmL…

maven原型_Maven原型创建技巧

maven原型我最近需要为姜黄SOA项目创建一些Maven原型。 对于不了解的人来说&#xff0c; Maven原型是一种基于一些预先罐装的项目模板生成项目的方法。 对于当前的姜黄SOA原型&#xff0c;它将创建一个多模块Maven项目&#xff0c;其中包含Interface和Service项目以及基本的WSD…

android 副mic测试,【收藏】Android Audio Framework CTS Verifier 测试方法

This new suite of tests requires human intervention and some external hardware including a Loopback Plug, a USB reference microphone and external speakers. For devices without 3.5 mm (⅛”) headset port, the user will be able to skip the test and mark it a…

python的数与字符串

数的类型&#xff1a; >>符号整数型(int)&#xff1a;0、1、-1 >>长整型(long)&#xff1a;88888888、999999999 >>浮点型(float)&#xff1a;2.77777、3.4445544 >>布尔型(bool)&#xff1a;True、False >>复数型(complex)&#xff1a;42j、-92…

Java在几乎所有方面都可以胜任本机响应

我与一位同事讨论了Java与JavaScript的话题&#xff0c;这是一个有问题的话题。 然后&#xff0c;他提到React Native多么出色&#xff0c;我决定我必须研究一下&#xff0c;也许要为Codename One掌握一些想法…… 那里有一些不错的主意&#xff0c;但是它们都不是革命性的或例…

魅蓝android底层是什么,魅蓝E2的手机系统是什么

魅蓝E2的手机系统是什么魅蓝E2的手机系统是Flyme 6系统。魅蓝E2搭载了基于YunOS底层深度定制的Flyme 6系统&#xff0c;相交于Flyme 5系列&#xff0c;Flyme 6拥有更轻巧明快的设计元素&#xff0c;辅以让人称颂的人工智能技术One Mind&#xff0c;可以有效保障魅蓝E2日常使用流…