国防部计划用无线网络连接若干个边防哨所。2种不同的通讯技术用来搭建无线网络。每个边防哨所都要配置无线电收发器;有一些哨所还可以配备卫星电话
任意两个配置了一条卫星电话线路的哨所(两边均有卫星电话)均可以通话,无论他们相距多远。而只通过无线电收发器通话的哨所之间的距离不能超过D,这是受收发器的功率的限制。
收发器的功率越高,通话距离D会更远,但价格也会更贵。
收发器需要统一购买和安装,所以全部哨所只能选择安装一种型号的收发器。换句话说,每一对哨所之间的通话距离都是同一个D。
你的任务是确定收发器必须的最小通话距离,使得每一对哨所之间至少有一条通话路径(直接或间接)

输入格式:
从 wireless.in 中输入数据第 1 行,2 个整数 S 和 P,S 表示可安装的卫星电话的哨所
数,P 表示边防哨所的数量。接下里 P 行,每行两个整数 x,y 描述一个哨所的平面坐标
(x, y),以 km 为单位。

输出 wireless.out 中
第 1 行,1 个实数 D,表示无线电收发器的最小传输距离,精确到小数点后两位。

输入样例#1:
2 4
0 100
0 300
0 600
150 750

输出样例#1:
212.13

问题解决的巨大关键是什么是最小传输距离
我们仔细读题+思考后,可以发现这题的题面扯了一堆废话使这道题变的好像nb了。其实很简单。
首先我们用一下贪心的思想,对于S个卫星电话,我们肯定是要给最长的S条边用
这样我们把所有点排个序
然后我们再想想,要知道两个哨所之间是否有通话路径,也就是我们要判断连通性,同时结合我们要排序,加之数据范围小
我们就得到结论:用并查集处理连通性问题,
总之排序+并查集,就是kruskal了,当时这是kruskal的变形,本题并不是标准的最小生成树,但是用的是最小生成树的做法a
因为我们最终要使每一对哨所之间至少有一条通话路径,而且后S个哨所是确定要使用卫星电话的
所以我们处理到p-s就行了
也就是我们只需要处理前p-s条边即可

 #include<bits/stdc++.h>
using namespace std;
const int maxn = ;
struct enkidu {
int x1, x2;
double val;
}e[maxn * maxn];
struct enuma {
int x, y;
}a[maxn];
int s, p;
int len = ;
int fa[maxn]; inline int read() {
int x = , y = ;
char ch = getchar();
while(!isdigit(ch)) {
if(ch == '-') y = -;
ch = getchar();
}
while(isdigit(ch)) {
x = (x << ) + (x << ) + ch - '';
ch = getchar();
}
return x * y;
} inline bool cmp(enkidu a, enkidu b) {
return a.val < b.val;} inline double dist(int p, int q) {
return sqrt(pow(double(a[p].x - a[q].x), ) + pow(double(a[p].y - a[q].y), ));
} int getfather(int x) {
if(fa[x] == x) return x;
return fa[x] = getfather(fa[x]);
} int main() {
s = read(), p = read();
for(int i = ; i <= p; ++i) {
a[i].x = read(), a[i].y = read();
fa[i] = i;
}
for(int i = ; i <= p; ++i)
for(int j = i + ; j <= p; ++j) {
e[++len].x1 = i;
e[len].x2 = j;
e[len].val = dist(i, j);
//cout << e[len].val;
}
sort(e + , e + len + , cmp);
double ans = ;
int num = p - s;
for(int i = ; i <= len, num > ; ++i) {
int u = getfather(e[i].x1);
int v = getfather(e[i].x2);
if(u != v) {
num--;
ans = max(ans, e[i].val);
fa[u] = v;
}
}
cout << setiosflags(ios::fixed) << setprecision();
cout << ans << '\n';
return ;
}

luoguP1991无线通讯网的更多相关文章

  1. 洛谷P1991 无线通讯网

    P1991 无线通讯网 170通过 539提交 题目提供者洛谷OnlineJudge 标签图论 难度普及+/提高 提交该题 讨论 题解 记录 最新讨论 怎么又炸了 为啥一直40!求解! UKE:inv ...

  2. P1991 无线通讯网

    P1991 无线通讯网 题目描述 国防部计划用无线网络连接若干个边防哨所.2 种不同的通讯技术用来搭建无线网络: 每个边防哨所都要配备无线电收发器:有一些哨所还可以增配卫星电话. 任意两个配备了一条卫 ...

  3. 洛谷——P1991 无线通讯网

    P1991 无线通讯网 题目描述 国防部计划用无线网络连接若干个边防哨所.2 种不同的通讯技术用来搭建无线网络: 每个边防哨所都要配备无线电收发器:有一些哨所还可以增配卫星电话. 任意两个配备了一条卫 ...

  4. Luogu P1991 无线通讯网

    P1991 无线通讯网 题目描述 国防部计划用无线网络连接若干个边防哨所.2 种不同的通讯技术用来搭建无线网络: 每个边防哨所都要配备无线电收发器:有一些哨所还可以增配卫星电话. 任意两个配备了一条卫 ...

  5. 洛谷 P1991 无线通讯网

    P1991 无线通讯网 题目描述 国防部计划用无线网络连接若干个边防哨所.2 种不同的通讯技术用来搭建无线网络: 每个边防哨所都要配备无线电收发器:有一些哨所还可以增配卫星电话. 任意两个配备了一条卫 ...

  6. 洛谷 P1991 无线通讯网 题解

    P1991 无线通讯网 题目描述 国防部计划用无线网络连接若干个边防哨所.2 种不同的通讯技术用来搭建无线网络: 每个边防哨所都要配备无线电收发器:有一些哨所还可以增配卫星电话. 任意两个配备了一条卫 ...

  7. 【luoguP1991】 无线通讯网--最小生成树

    题目描述 国防部计划用无线网络连接若干个边防哨所.2 种不同的通讯技术用来搭建无线网络: 每个边防哨所都要配备无线电收发器:有一些哨所还可以增配卫星电话. 任意两个配备了一条卫星电话线路的哨所(两边都 ...

  8. 洛谷P1991无线通讯网[kruskal | 二分答案 并查集]

    题目描述 国防部计划用无线网络连接若干个边防哨所.2 种不同的通讯技术用来搭建无线网络: 每个边防哨所都要配备无线电收发器:有一些哨所还可以增配卫星电话. 任意两个配备了一条卫星电话线路的哨所(两边都 ...

  9. 洛谷 P1991 无线通讯网 Label:最小生成树 || 二分

    题目描述 国防部计划用无线网络连接若干个边防哨所.2 种不同的通讯技术用来搭建无线网络: 每个边防哨所都要配备无线电收发器:有一些哨所还可以增配卫星电话. 任意两个配备了一条卫星电话线路的哨所(两边都 ...

随机推荐

  1. [洛谷P1536]村村通

    题意:多组数据,当n为0时结束,每组数据表示有n个村子,m条路,求还需要建多少条路,使得所有的村子联通题解:用并查集求出有多少个联通块,然后求解 C++ Code: #include<cstdi ...

  2. WCF分布式开发步步为赢(12):WCF事务机制(Transaction)和分布式事务编程

    今天我们继续学习WCF分布式开发步步为赢系列的12节:WCF事务机制(Transaction)和分布式事务编程.众所周知,应用系统开发过程中,事务是一个重要的概念.它是保证数据与服务可靠性的重要机制. ...

  3. 有关spring的各种下载资料的网站

    spring的文件和jar包下载的网站: https://repo.spring.io/release/org/springframework/spring/ spring 各个版本源码下载的资料: ...

  4. 关闭listener监听日志

    有几次碰到过由于监听日志文件大小达到几G,使得在连接时非常慢,像hang住一样,windows下的监听日志达到4G限制,后续连接如果无法写监听日志,就会产生TNS-12537报错,可以通过关闭写监听日 ...

  5. MAVEN 编译打包测试 指定本地jar

    转载自:http://penuel.iteye.com/blog/1766102 maven对于互联网开发,进行版本管理有着不可或缺的作用;  而经常开发的程序猿直接联调或者依赖未上线或deploy的 ...

  6. Vue项目中引入外部文件(css、js、less)

    例子中css文件采用bootstrap.css,js文件采用jQuery,less文件用less.less(自定义文件) 步骤一:安装webpack cnpm install webpack -g 步 ...

  7. web上传组件

    uploadify  jquery插件. common-fileipload; common-io ;jar

  8. Spring - IoC(7): 延迟实例化

    默认情况下,Spring IoC 容器启动后,在初始化过程中,会以单例模式创建并配置所有使用 singleton 定义的 Bean 的实例.通常情况下,提前实例化 Bean 是可取的,因为这样在配置中 ...

  9. Chrome 本地通信

    http://blog.csdn.net/ztmaster/article/details/52684772

  10. [POJ1423]Stirling公式的应用

    Stirling公式: n!约等于sqrt(2*pi*n)*(n/e)^n 另外,e约等于2.71828182845409523... 试了一下发现math库里面并不能像pi一样直接调e但是发现挺好记 ...