题解:无线通讯网
目录
1.预备知识
2.题意概述
3.思路分析
4.代码实现
预备知识
1.并查集
2.最小生成树
3.坐标轴上两点距离公式
题意概述
这道题目算是最讨厌的“阅读理解”题目了 它的题目挺长的所以化简能力在此显现了出来
抽象题目得出:
> 2种网络方式 连接P个哨所
> 方式1.卫星电话
> a.只有S台卫星电话
> b.连接的两个哨所都要有卫星电话
> c.卫星任意距离都可(解决相隔最远的)
> 方式2.无线电
> a.连接的哨所距离不超过D
> 要求每个哨所都有一条通话路径(生成树)
> 目标:求得D的最小值
思路分析
关于求出两个哨所距离很简单:
直接即可D=(x1−x2)2+(y1−y2)2D=\sqrt {(x_1-x_2)^2+(y_1-y_2)^2}D=(x1 −x2 )2+(y1 −y2 )2
明确一个观点对于一个哨所 连接离他近的哨所肯定比连接远的更优
同时一个哨所我们肯定是只连接一个哨所就好(满足连通性)
很显然针对这样我们可以发现题目要求的就是找到最小的无向连通无环图
这不就是最小生成树嘛!
把这个坐标轴上所有的哨所连接就构成了原始图
在原始图的基础上求最小生成树(因为我们一开始不知道哪些边会去掉)
而后在最小生成树中找到最大的前(S/2)(S/2)(S/2)条边用卫星电话代替
最小的传输距离:D=最大的前(S/2−1)(S/2-1)(S/2−1)条边的长度
也就是相当于让已经取得的边数eee取到P−SP-SP−S的时候结束
保存这个时候的长度即可
代码实现