POJ2031Building a Space Station

时间:2022-09-05 18:59:42

http://poj.org/problem?id=2031

题意:你是空间站的一员,太空里有很多球形且体积不一的“小房间”,房间可能相距不近,也可能是接触或者甚至是重叠关系,所有的房间都必须相连,这样的话宇航员才能从这个房间走到另一个房间,而宇航员从一个房间走到另一个房间,只要满足三个条件中的一个即可:1两个房间是接触的,2两个房间是重叠的,3两个房间之间有走廊相连。也因此若是没有接触的两个小房间就要有走廊连接,忽略走廊的宽度,花费与长度成正比,所以当然是花费越少越好,而球与球之间的距离只接触到两球的表面即可,因为两球的表面相距最近,因此你的工作就是算给出的几个小房间中要达到相连的状态需花费的最小钱数是多少

思路:要求两个房间之间必须要有相连的走廊,所以就是最小生成树的思想,只要再考虑一下是不是接触或重叠就可以了

#include<cstdio>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstring> using namespace std ; const double eps=1e- ;
const int INF = <<; struct point
{
double x,y,z,w ;
point() {}
point(double a,double b,double c,double d):x(a),y(b),z(c),w(d) {}
}; inline double sqrt1(double a)//函数被调用的次数多了就比较浪费时间,所以可以定义成内置函数
{
return a*a;
} double dis(const point &a,const point &b)//求两点间距离
{
return sqrt(sqrt1(a.x-b.x)+sqrt1(a.y-b.y)+sqrt1(a.z-b.z));
} double low[] ;
double dist[][],ans ;
bool vis[] ;
int n ; int prim()
{
ans = ;
int i,j,flag;
double minn ;
for(i = ; i <= n ; i++)
{
low[i] = INF ;
vis[i] = false ;
}
low[] = ;
for(i = ; i <= n ; i++)
{
minn = INF ;
flag = ;
for(j = ; j <= n ; j++)
{
if(minn > low[j]&&!vis[j])
{
minn = low[j] ;
flag = j ;
}
}
if(minn >= INF)
return false ;
ans += minn ;
vis[flag] = true ;
for(j = ; j <= n ; j++)
{
if(!vis[j]&&low[j]>dist[flag][j])
low[j] = dist[flag][j] ;
}
}
return true ;
} int main()
{
while(scanf("%d",&n)&&n)
{
point a[];
memset(dist,,sizeof(dist));
for(int i=; i<=n; i++)
scanf("%lf%lf%lf%lf",&a[i].x,&a[i].y,&a[i].z,&a[i].w);
for(int i=; i<=n; i++)
{
for(int j=; j<=n; j++)
{
if(dis(a[i],a[j])-a[i].w-a[j].w<=)//两球间最短距离为两球球心距离再减去两球的半径
dist[i][j]=;
else if(dis(a[i],a[j])-a[i].w-a[j].w>eps)
dist[i][j]=dis(a[i],a[j])-a[i].w-a[j].w;
}
}
prim();
printf("%.3lf\n",ans);
}
return ;
}

特别郁闷的是明明是同一个代码,一开始交是0ms后来交就是16ms。。。。。

POJ2031Building a Space Station的更多相关文章

  1. POJ2031Building a Space Station &lpar;最小生成树之prim&rpar;

    Problem Description You are a member of the space station engineering team, and are assigned a task ...

  2. poj--2031--Building a Space Station(prime)

    Building a Space Station Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 6635   Accepte ...

  3. poj2031-Building a Space Station(最小生成树,kruskal,prime)

    Building a Space Station Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 5874   Accepte ...

  4. POJ 2031 Building a Space Station

    3维空间中的最小生成树....好久没碰关于图的东西了.....              Building a Space Station Time Limit: 1000MS   Memory Li ...

  5. &lbrack;ACM&lowbar;搜索&rsqb; POJ 1096 Space Station Shielding (搜索 &plus; 洪泛算法Flood&lowbar;Fill)

    Description Roger Wilco is in charge of the design of a low orbiting space station for the planet Ma ...

  6. POJ 2031 Building a Space Station &lpar;最小生成树&rpar;

    Building a Space Station Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 5173   Accepte ...

  7. POJ 2031&Tab; Building a Space Station (最小生成树)

    Building a Space Station 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/C Description Yo ...

  8. Building a Space Station(kruskal&comma;说好的数论呢)

    Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 3820   Accepted: 1950 Description You a ...

  9. poj 2031 Building a Space Station【最小生成树prime】【模板题】

    Building a Space Station Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 5699   Accepte ...

随机推荐

  1. mathlab之floor&comma;ceil&comma;round&comma;int以及fix函数

    建议自己动手敲敲,网上很多人自己都没搞清楚然后好多错的.毕竟自己亲眼看到结果才有说服力. 以下是我亲眼见到的结果. 1.double floor(double)函数 floor()函数是常用的取整函数 ...

  2. laravel中TokenMismatchException异常处理

    在使用post或者put等方法请求时,有时会报TokenMismatchException in VerifyCsrfToken.php line 67错误.原因是laravel默认开启了防CSRF. ...

  3. Web&lpar;Jsp&plus; Servlet&rpar;开发中如何解决中文乱码问题

    1.中文乱码的成因 编码的字符集和解码的字符集不一致. 2.web开发过程中可能出现的乱码的位置及解决方案 ①request乱码 在向服务器传递数据时,所传递的中文有可能出现乱码. post请求(协议 ...

  4. HTML5CSS3特效-上下跳动的小球-遁地龙卷风

    (-1)写在前面 我用的是chrome49,这个idea是我在*上回答问题时看到了,多谢这位同行,加深了我对很多技术点的理解,最近刚到北京,忙碌了一两天,在后续的日子里,会被安 ...

  5. Windows NT驱动程序的基本结构和实例

    Windows驱动程序分为两类:一类是不支持即插即用功能的NT式驱动程序:另一类是支持即插即用功能的WDM驱动程序. NT式驱动的基本结构: 1)驱动加载过程与驱动入口函数DriverEntry: 驱 ...

  6. web安全之sql注入实例(5&period;0之前的)

    web安全之sql(5.0之前)注入实例 5.0之前的数据库没有information库. 所以这里需要运用的是load_file()函数来获取信息. 1.判断是否有sql注入,用and 1=1 和 ...

  7. leetcode 122&period; Best Time to Buy and Sell Stock II ----- java

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  8. 第4章1节《MonkeyRunner源码剖析》ADB协议及服务&colon; ADB协议概览OVERVIEW&period;TXT翻译参考&lpar;原创&rpar;

    天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文“寻求合作伙伴编写<深入理解 MonkeyRunner>书籍“.但因为诸多原因,没有如愿.所以这里把草稿分享出来,所以错误在 ...

  9. CustomScrollView &plus; slivers &plus; SliverAppBar

    import 'package:flutter/material.dart'; void main()=>runApp(MyApp()); class MyApp extends Statele ...

  10. POJ--2752--Seek the Name&comma; Seek the Fame【KMP】

    链接:http://poj.org/problem? id=2752 题意:对于一个字符串S,可能存在前n个字符等于后n个字符,从小到大输出这些n值. 思路:这道题加深了对next数组的理解.next ...