国防部计划用无线网络连接若干个边防哨所。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. [Leetcode] unique paths ii 独特路径

    Follow up for "Unique Paths": Now consider if some obstacles are added to the grids. How m ...

  2. Noip2016滚粗记QAQ

    day1 t1 XBG #include<map> #include<cstdio> #include<string> #include<string.h&g ...

  3. 【TMD模拟赛】黄金拼图 Cao

    正解:Cao 据说这样的题是用来骗丛林生物上树的...... 这样的题除了考观察力之外还.........我们发现他异或了opt,恩,就这样,用离线推答案..... #include <cstd ...

  4. POJ1459:Power Network(多源点多汇点的最大流)

    Power Network Time Limit: 2000MS   Memory Limit: 32768K Total Submissions: 31086   Accepted: 15986 题 ...

  5. react 记录:React Warning: Hash history cannot PUSH the same path; a new entry will not be added to the history stack

    前言: react-router-dom 4.4.2 在页面中直接使用 import { Link } from 'react-router-dom' //使用 <Link to={{ path ...

  6. Vijos 1232 核电站问题

    核电站问题 描述 一个核电站有N个放核物质的坑,坑排列在一条直线上.如果连续M个坑中放入核物质,则会发生爆炸,于是,在某些坑中可能不放核物质. 现在,请你计算:对于给定的N和M,求不发生爆炸的放置核物 ...

  7. 【洛谷 P1337】[JSOI2004]平衡点 / 吊打XXX (模拟退火)

    题目链接 正解就算了吧,谁叫我理生化 语数外 政史地都菜呢 模拟退火真玄学,不知道发生了什么就跑出答案了,原理就算了吧,能用(pianfen)就好. 当重物平衡时,势能一定是最小的,于是当我随机出一个 ...

  8. 10款最新CSS3/jQuery菜单导航插件

    这是我们在2014年收集的10款最新的CSS3 / jQuery菜单导航插件,不论从外观样式,还是功能扩展性,这些jQuery菜单一定可以满足大家的设计需求.这次我们收集的jQuery菜单,有水平 菜 ...

  9. javascript的阻塞机制

    javascript的阻塞机制 浏览器在执行javascript代码时,不能同时做其它事情,当遇到javascript时,浏览器会下载js文件,解析并执行该文件,而在这期间页面的渲染是完全被阻塞的,因 ...

  10. python面向对象之继承与派生

    一.继承 继承是一种创建新的类的方式,在python中,新建的类可以继承自一个或者多个父类,原始类称为基类或超类,新建的类称为派生类或子类. python中类的继承分为:单继承和多继承,如果是多继承的 ...