北极通讯网络

题意

北极的某区域共有n座村庄,每座村庄的坐标用一对整数 (x,y)(x,y)(x,y) 表示。为了加强联系,决定在村庄之间建立通讯网络。通讯工具可以是无线电收发机,也可以是卫星设备。所有的村庄都可以拥有一部无线电收发机,且所有的无线电收发机型号相同。但卫星设备数量有限,只能给一部分村庄配备卫星设备。
不同型号的无线电收发机有一个不同的参数 ddd,两座村庄之间的距离如果不超过 ddd 就可以用该型号的无线电收发机直接通讯,ddd 值越大的型号价格越贵。拥有卫星设备的两座村庄无论相距多远都可以直接通讯。
现在有kkk台卫星设备,请你编一个程序,计算出应该如何分配这 kkk 台卫星设备,才能使所拥有的无线电收发机的 ddd 值最小,并保证每两座村庄之间都可以直接或间接地通讯。
例如,对于下面三座村庄:
其中∣AB∣=10,∣BC∣=20,∣AC∣=105≈22.36∣AB∣=10,∣BC∣=20,∣AC∣=10\sqrt{5}≈22.36∣AB∣=10,∣BC∣=20,∣AC∣=105​≈22.36
如果没有任何卫星设备或只有111台卫星设备( k=0k=0k=0 或 k=1k=1k=1),则满足条件的最小的 d=20d=20d=20,因为 AAA 和 BBB,BBB 和 CCC 可以用无线电直接通讯;而 AAA 和 CCC 可以用 BBB 中转实现间接通讯(即消息从 AAA 传到 BBB,再从 BBB 传到 CCC );
如果有2台卫星设备(k=2k=2k=2),则可以把这两台设备分别分配给BBB和CCC,这样最小的ddd可取101010,因为AAA和B之间可以用无线电直接通讯;BBB和CCC之间可以用卫星直接通讯;AAA和CCC可以用BBB中转实现间接通讯。
如果有333台卫星设备,则AAA,BBB,CCC两两之间都可以直接用卫星通讯,最小的ddd可取000。

思路

由题意可知,kkk 个卫星设备可以使得 k−1k - 1k−1 条通讯线路的 ddd 值变成 000,那么只需要将图中每个点之间的距离求出来,并求出最小生成树,然后去掉最小生成树中 k−1k - 1k−1条权值最大的边之后,剩下的边中权值最大的即为所求的 ddd

代码

// Author:zzqwtcc
// Problem: 北极通讯网络
// Contest: NowCoder
// Time:2021-10-20 19:59:44
// URL: https://ac.nowcoder.com/acm/contest/958/B
// Memory Limit: 65536 MB
// Time Limit: 2000 ms#include<bits/stdc++.h>
#include<unordered_map>
// #define int long long
#define INF 0x3f3f3f3f
#define INFL 0x3f3f3f3f3f3f3f3f
#define mod 1000000007
#define MOD 998244353
#define rep(i, st, ed) for (int (i) = (st); (i) <= (ed);++(i))
#define pre(i, ed, st) for (int (i) = (ed); (i) >= (st);--(i))
//#define debug(x,y) cerr << (x) << " == " << (y) << endl;
#define endl '\n'
using namespace std;typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int, int> PII;
template<typename T> inline T gcd(T a, T b) { return b ? gcd(b, a % b) : a; }
template<typename T> inline T lowbit(T x) { return x & -x; }
template<typename T,typename S>inline void debug(S s,T t){cerr << s << " " << t << endl;}
template<typename T>inline void debug(T t){cerr << t << endl;}
// template<typename T> T qmi(T a, T b = mod - 2, T p = mod) { T res = 1; b %= (p - 1 == 0 ? p : p - 1); while (b) { if (b & 1) { res = (LL)res * a % p; }b >>= 1; a = (LL)a * a % p; }return res % mod; }const int N = 600;
int n, k;
struct Node{double x,y;
}node[N];double dist[N][N];
bool vis[N];
double d[N];
vector<double>vec;double get_dis(const Node &a,const Node &b){return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
}void prim(){rep(i,1,n)d[i] = DBL_MAX;d[1] = 0;int cnt = 0;for(int i = 1; i <= n;++i){int t = -1;for(int j = 1; j <= n;++j){if(!vis[j] && (t == - 1 || d[t] > d[j]))t = j;}vec.push_back(d[t]);vis[t] = true;for(int j = 1; j <= n;++j){d[j] = min(d[j], dist[t][j]);}}
}void solve() {cin >> n >> k;for(int i = 1; i <= n;++i){cin >> node[i].x >> node[i].y;}for(int i = 1; i <= n;++i){for(int j = i + 1; j <= n;++j){double dis = get_dis(node[i],node[j]);dist[i][j] = dist[j][i] = dis;}}prim();sort(vec.begin(),vec.end());reverse(vec.begin(),vec.end());if(k <= 1){printf("%.2lf\n",vec[0]);}else if(k < n){printf("%.2lf\n",vec[k - 1]);}else cout << 0 << endl;
}signed main() {//int _; cin >> _;//while (_--)solve();return 0;
}

北极通讯网络(最小生成树)相关推荐

  1. 最小生成树——北极通讯网络

    问题 B: 北极通讯网络 时间限制: 1 Sec  内存限制: 128 MB 提交: 17  解决: 7 [提交][状态][讨论版][命题人:add_xiezhenghao] 题目描述 北极的某区域共 ...

  2. AcWing 1145. 北极通讯网络 题解

    AcWing 1145. 北极通讯网络 北极的某区域共有 n 座村庄,每座村庄的坐标用一对整数 (x,y) 表示. 为了加强联系,决定在村庄之间建立通讯网络,使每两座村庄之间都可以直接或间接通讯. 通 ...

  3. 利用libcurl库进行http通讯网络

    文章目录 一.了解libcurl 二.通过实例认识libcurl 三.总结 四.参考资料 本文章使用的是Ubuntu18.04来完成程序编译运行. 一.了解libcurl libcurl是什么 lib ...

  4. 当今[远程抄表](http://hkhuake.com.cn/)的所有无线通信模式---手机基站移动无线通讯网络

    当今远程抄表的所有无线通信模式-手机基站移动无线通讯网络 这里所说的远程抄表的所有无线通信模式主要是现如今的.大家知道 现在是个网络互联,大数据的时代.所以在此背景下的远程抄表技术也 进行了变革.所谓 ...

  5. 回顾:中网通讯网络公司CEO罗与曾作客新浪嘉宾聊天室

    转载链接:http://tech.sina.com.cn/it/w/2001-11-09/91253.shtml 回顾:中网通讯网络公司CEO罗与曾作客新浪嘉宾聊天室 大家好! 主持人 :各位网友,下 ...

  6. 基于SSH的通讯网络电子计费系统 毕业论文+任务书+开题报告+文献综述+外文翻译及原文+答辩PPT+代码清单+项目源码及数据库文件

    下载地址:https://download.csdn.net/download/junkyio321/40671271 项目介绍: 基于SSH的通讯网络电子计费系统 毕业论文+任务书+开题报告+文献综 ...

  7. USACO 3.1 Agri-Net 最短网络 (最小生成树)(克鲁斯卡尔算法)

    题意 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场.当然,他需要你的帮助.约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其他农场.为了用最 ...

  8. 5G技术在实际应用面临哪些困难?能否满足应急指挥通讯网络要求?

    5G技术的发展将是中国走向现代化极其重要的一部分,并将提供史无前例的社会应用图景. 不过,5G的呼声虽然高,但实际应用还面临不少问题,比如: 一.通信基础设施建设:高昂的场地租金和资源使用费 相比4G ...

  9. GPRS 无线通讯网络介绍问答 40 题

    1.什么是 GPRS?  GPRS正式商用以来,使用的客户人数不断增多,但很多移动手机用户对这个以英文字母缩写命名的新业务还不了解,究竟什么是GPRS?GPRS能给用户带来什么呢? GPRS是通用分组 ...

最新文章

  1. 如何防范Fintech创新中的人工智能、大数据、区块链、云计算技术风险?
  2. 内部类调用相同属性同名时的调用细节
  3. linux 中卸载提示设备正忙怎么办?
  4. Hive安装MySql
  5. Java 8 并发: 原子变量和 ConcurrentMap
  6. c语言编简单博弈小游戏,[2018年最新整理]实验二:利用α-β搜索过程的博弈树搜索算法编写一字棋游戏.doc...
  7. centos7 DNS服务器搭建
  8. HTTP中GET与POST方法有什么区别
  9. ZooKeeper未授权访问漏洞记录(影响范围:全版本,端口:2181)
  10. python url解析path_Django(CBV解析、模板层)
  11. 随机森林模型解释_随机森林解释
  12. 、谷歌离线地图开发教程
  13. Mingle 2.0 发布了
  14. vue3+vant开发微信公众号网页爬坑不完全指北
  15. 《团》里男人是否可嫁的汉?
  16. 使用MATLAB计算一幅图像的熵
  17. BBTRZ柔性矿物质绝缘防火电缆的优势
  18. linux安装SecureCRT安装教学
  19. 古典密码学与现代密码学
  20. 服务器无外网环境安装软件

热门文章

  1. “人机结合”基金何以笑傲18年的“团灭行情”?
  2. 学生学籍管理系统(带面板)
  3. 消除视频水印的软件有哪些?试试这几款去水印软件
  4. 基于物联网的远程温湿度监测系统 --- ESP8266 + 机智云
  5. 使用IntelliJ IDEA连接MySQL数据库并进行初步测试
  6. 软件测试中语句覆盖的优点,软件测试之测试覆盖率的基本策略
  7. 设计思想解读开源框架:java自学视频下载迅雷下载
  8. 【有利可图网】PS教程:设计制作卡通游戏风格字体效果
  9. PTN设备和SDH设备有什么区别?可以互通吗?
  10. 关于电脑D盘(E盘)等非系统盘消失不见的解决办法