江西理工大学编程俱乐部 2328 Star
: Star
时间限制: C/C++ s Java/Python s 内存限制: MB 答案正确: 提交: 题目描述 31世纪,人类世界的科技已经发展到了空前的高度,星际移民,星际旅游早已经不再是问题。人类已经掌握了开发星系的能力。但是,无论发展到何种地步,资源一直是人们关注的重点。一种新的能源被人类掌握,通过它可以搭建虫洞,实现超光年传输。发展武器。但是虽然这种物质在宇宙海量的存在着,但它对于宇宙的稳定是至关重要的,若过量消耗这种物质,对于宇宙的稳定,星系与星系之间以及星系内部的微妙平衡都会产生巨大的影响。这种物质就是暗物质。 -----《宇宙百科》节选 现在,你所在的星系下有n个主星球居住着人民。为了星系内部的稳定与和平发展,现在需要在n个主星球之间建立空间虫洞,众所周知建立虫洞要消耗大量的暗物质,因此,你想要在n个主星球之间建立联系的情况下尽量少的消耗暗物质。目前你已经知道的是,建立虫洞所需要消耗的暗物质与两个星球之间的距离成正比,比例系数为k。并且,两个星球之间的距离为空间缩点距离。每个星球有它自己的三维物理坐标。不过,现在有一个好消息。你所在的星系掌握了一项新的技术,空间奇点压缩,简单来说就是降维,但是由于技术发展初期不够成熟,只能压缩一维。并且,任意两个主星球之间都可以选择是否进行空间奇点压缩。现在,你想知道,在这n个主星球之间建立连接需要花费的最少暗物质是多少。 空间缩点距离:设两个n维坐标a(x1,x2,x3,,,,xn),b(y1,y2,y3,y4,,,yn).设距离为s,则s=abs((x1+x2+x3+…+xn)−(y1+y2+y3+…+yn)); ----以上内容纯属瞎扯,请忽略其真实性 输入
第一行两个整数n和k。(≤n≤,≤k≤)
接下开n行,每行三个整数x,y,z,其中第i行表示第i个星球在星系中的物理坐标。数据保证没有两个星球处于同一个位置上。(≤x,y,z≤)
输出
n个主星球之间建立连接需要花费的最少暗物质。 样例输入 样例输出 提示
样例说明: 星球1和星球2之间压缩第三维 星球2和星球3之间压缩第二维 来源
Ocean_star_T
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
#include <utility>
#include <vector>
#include <map>
#include <queue>
#include <stack>
#include <cstdlib>
#include <cmath>
typedef long long ll;
#define lowbit(x) (x&(-x))
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
using namespace std;
#define pi acos(-1)
#define P pair<ll,ll>
const ll N = 1e5+;
ll n,k;
ll cnt;
int fa[N];
void init()
{
for(int i =;i<n;i++){
fa[i] = i;
}
cnt=;
}
struct Nod{
ll x,y,z,num;
}nod[N];
struct Edge{
ll fr,to,val;
}e[N*];
bool cmp1(Nod a,Nod b)
{
return a.y+a.z<b.y+b.z;
}
bool cmp2(Nod a,Nod b)
{
return a.x+a.z<b.x+b.z;
}
bool cmp3(Nod a,Nod b)
{
return a.x+a.y<b.x+b.y;
}
bool cmp4(Nod a,Nod b)
{
return a.x+a.y+a.z<b.x+b.y+b.z;
}
bool cmp5(Edge a,Edge b)
{
return a.val<b.val;
}
int find(int x)
{
return fa[x]=(x==fa[x]?x:find(fa[x]));
}
ll prim()
{
sort(e,e+cnt,cmp5);
int ans=n;
ll sum=;
for(int i =;i<cnt;i++)
{
if(ans>){
int x=find(e[i].fr),y=find(e[i].to);
if(x!=y){
fa[x] = y;
ans--;
sum+=e[i].val;
}
}
}
return sum;
}
int main()
{
scanf("%lld%lld",&n,&k);
for(int i =;i<n;i++){
scanf("%lld%lld%lld",&nod[i].x,&nod[i].y,&nod[i].z);
nod[i].num=i;
}
init();
sort(nod,nod+n,cmp1);
for(int i =;i<n-;i++)
{
e[cnt].fr=nod[i].num;
e[cnt].to=nod[i+].num;
e[cnt++].val=abs((nod[i].y+nod[i].z)-(nod[i+].y+nod[i+].z));
}
sort(nod,nod+n,cmp2);
for(int i =;i<n-;i++)
{
e[cnt].fr=nod[i].num;
e[cnt].to=nod[i+].num;
e[cnt++].val=abs((nod[i].x+nod[i].z)-(nod[i+].x+nod[i+].z));
}
sort(nod,nod+n,cmp3);
for(int i =;i<n-;i++)
{
e[cnt].fr=nod[i].num;
e[cnt].to=nod[i+].num;
e[cnt++].val=abs((nod[i].x+nod[i].y)-(nod[i+].x+nod[i+].y));
}
sort(nod,nod+n,cmp4);
for(int i =;i<n-;i++)
{
e[cnt].fr=nod[i].num;
e[cnt].to=nod[i+].num;
e[cnt++].val=abs((nod[i].x+nod[i].y+nod[i].z)-(nod[i+].x+nod[i+].y+nod[i+].z));
}
ll ret = prim();
printf("%lld\n",ret*k);
return ;
}
江西理工大学编程俱乐部 2328 Star的更多相关文章
- 江西理工大学南昌校区cool code竞赛
这次比赛原本就是来打酱油的,想做个签到题就走!一开始不知道1002是签到题,一直死磕1001,WA了四发过了,回头一看Rank,三十名,我靠!看了1001的AC率,在我AC之前只有一个人AC了,当时我 ...
- 2018年江西理工大学C语言程序设计竞赛(初级组)一
C语言竞赛初级组第一.二场答案:https://www.cnblogs.com/xingkongyihao/p/10046918.html A: 逆序对 时间限制: 1 s 内存限制: ...
- 2018年江西理工大学C语言程序设计竞赛高级组部分题解
B Interesting paths 考察范围:组合数学 此题是机器人走方格的变种,n*m的网格,从(1,1)走到(n,m),首先可以明确,水平要走m-1格,竖直要走n-1格,则走到目的地的任意一条 ...
- 江西理工大学南昌校区acm选拔赛题解
第一题略 第二题 #include<stdio.h> int main() { int a1,a2,a3,b1,b3,b2,c1,c2,c3,n,sum,d1,d2,d3,i; scanf ...
- 2016年江西理工大学C语言程序设计竞赛(高级组)
问题 A: jxust 解法:争议的问题(是输入整行还是输入字符串),这里倾向输入字符串,然后判断是否含有jxust就行 #include<bits/stdc++.h> using nam ...
- 2016年江西理工大学C语言程序设计竞赛(初级组)
问题 A: 木棒根数 解法:把所有的情况保存下来,加一下就好 #include<bits/stdc++.h> using namespace std; map<char,int> ...
- 2015年江西理工大学C语言程序设计竞赛(高级组)
A 解法:DP+二分 dp[i]=max(dp[i],dp[j]+p[i].v)(i>j) dp[i]表示建立i点之后能够获得的最大值 int n,M; struct node { int l, ...
- 2014江西理工大学C语言程序竞赛高级组
Beautiful Palindrome Number 题意:求N里面有多少个符合要求的数字(数字要求:回文数,且前一半部分是不严格递增) 解法:打表 #include<bits/stdc++. ...
- 2014江西理工大学C语言程序竞赛初级组
坐公交 解法:略 #include<stdio.h> #include<string> #include<iostream> #include<math.h& ...
随机推荐
- CentOS yum安装mcrypt
CentOS yum安装mcrypt 本篇排错的前提是只想用yum安装,不想使用源码包编译安装. php依赖一下包: #yum install libmcrypt libmcrypt-deve ...
- 框架使用-Sql拼接
Sql语句拼写: 查询 DQueryDom DmoQuery(返回的整个对象) 更新 DQUpdateDom 删除 DQDeleteDom 条件 dom.Where.Conditions.Add(D ...
- HTML 笔记之 HTML 元素的概念
HTML 不是编程语言,它是一种标记语言 HTML 中常见的几个名词是 元素. 标签(开始标签和结束标签). 属性. 元素内容 这篇文章将要介绍的是 HTML 元素的概念 元素的概念 例子: < ...
- 【Oracle】曾经的Oracle学习笔记(1-3) 数据库常见用语,常见命令,创建测试表
一.数据库的登录 二.数据库常用语 三.测试表的创建,测试数据初始化 四.常见命令介绍 五.测试 user:jeffreysn:jeffrey user:systemsn:jeffrey 浏览器中输入 ...
- Hadoop之—— WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform...
[hadoop@hadoop000 hadoop]$ ldd --version ldd (GNU libc) 2.12 Copyright (C) Free Software Foundation, ...
- hiho一下 第三十七周 二分查找之k小数
题目链接:http://hihocoder.com/contest/hiho37/problem/1 , 简单二分. 算法: 题目即为求一个无序数组数组中第k小的数,由于数据量太大,排序是会超时的. ...
- 【转载】2018 hosts 持续更新访问 gu歌【更新于:2018-05-03】
修改HOSTS实现免费,简单访问谷歌的目的 也是比较稳定的方法.修改hosts.修改hosts的方法,原理在于直接存储谷歌网站的IP地址.这样就不用DNS来解析网址了.也就是说,当我们输入谷歌 ...
- 2018.6.13 Java语言基础复习总结
Java语言基础与面向对象编程实践 第一章 初识Java 1.1机器语言 机器语言是指一台计算机全部的指令集合.机器语言室友0和1组成的二进制数,是一串串由0和1组成的指令序列,可将这些指令序列交给计 ...
- 删除临时文件的bat文件
@echo offecho 正在清除系统垃圾文件,请稍等......del /f /s /q %systemdrive%\*.tmpdel /f /s /q %systemdrive%\*._mpde ...
- 重温 JSP 与 Servlet
Java Web使用SSH框架多了,很多基础的 JSP 与 Servlet 的东西都忘记了.最近在 JSP 标签 和 Struts2 包装的 Session 对象的混合使用时弄晕了,就翻书温习下. J ...