[poj 2349]Arctic Network

【代码超详解】POJ 2349 Arctic Network(Kruskal 算法) 一、题目描述 阅读详情

题意:给p个点,要在这些点中选一些建立无线电站,使得每两个点之间都可以通讯。另外有s个通讯卫星,两个通讯卫星之间无论距离长短都可以自由通信。但是无线电站的规格必须相同,即任意两个无线电站的通讯距离是相同的。比如题目给的样例,我们可以选择(0,100)和(0,300)各建一个无线电站,它们之间通过无线电通信,(0,600)和(150,750)之间类似,然后这四个点被分为了两组,这两组之间通过卫星通信,这个方案可以使得无线电的通讯距离最短,也就是(0,600)和(150,750)间的距离。

思路:本例课通过Kruskal算法求最小生成树得到答案。我们知道,在没有建边时,各个点自己独立为一个连通分量,共有p个,我们通过建边,最后的目的是把它们分成s个(s即为卫星数量)连通分量,然后这些连通分量和连通分量之间就可以直接通过卫星通信。某个连通分量内部间各点则通过无线电通信。由Kruskal算法的思想我们可以分析出来,显然,如果两个点在同一个连通分量里,我们是没有必要在它们之间建边的。从而我们得到算法:

1初始化求出两两点之间的距离,得到p*(p-1)/2条边

2每次从剩下的边中选出距离最短的一条,如果这个边的两端属于相同的连通分量,则删除,继续本步。如果已经没有边可选,直接退出

3将选出的这条边的两端连接,并用这条边的长度更新答案

4重复上述过程直到剩余s个连通分量。这里我们知道,原来一共有p个连通分量,每次加边都会使得连通分量减少一,所以上述循环总共需要p-s次。

由于每次需要选择最短的边,我们用优先队列优化这个过程。判断连通分量可以用并查集。如此可以得到代码:

/*
	初始化每个点一个连通分量 
	每次只需要选最小边即可,然后在剩下s个连通分量时答案就更新完毕鸟
*/ 
#include <cstdio>
#include <cmath>
#include <cstring>
#include <vector>
#include <queue>
using namespace std;

const double INF = 1e10;
const int MAX = 512;
struct Point {
	double x, y;
	double dis(const Point& B) {
		return sqrt((x - B.x) * (x - B.x) + (y - B.y ) * (y - B.y));
	}
} a[MAX];
struct edge {
	int from, to;
	double cost;
};
struct cmp {
	bool operator()(edge& e1, edge& e2) {
		return e1.cost > e2.cost;
	}
};

int father[MAX];

int find(int x) {
	return x == father[x] ? x : father[x] = find(father[x]);
}
void Union(int x, int y) {
	int fx = find(x), fy = find(y);
	if (fx != fy) {
		father[fx] = fy;
	}
}

double gao(int s, int p) {
	priority_queue<edge, vector<edge>, cmp> Q;
	for (int i = 0; i < p; ++i) {
		for (int j = i + 1; j < p; ++j) {
			Q.push((struct edge){i, j, a[i].dis(a[j])});
		}
		father[i] = i;
	}
	double ans = 0.0;
	for (int i = s; i < p; ++i) {
		edge e;
		e.from = e.to = e.cost = 0.0;
		while (!Q.empty()) {
			e = Q.top();
			Q.pop();
			if (find(e.from) != find(e.to)) break;
		}
		
		Union(e.from, e.to);
		if (ans < e.cost) ans = e.cost;
	}
	return ans;
}

int main() {
	int T;
	scanf(" %d", &T);
	while (T--) {
		int s, p;
		scanf(" %d %d", &s, &p);
		for (int i = 0; i < p; ++i) {
			scanf(" %lf %lf", &a[i].x, &a[i].y);
		}
		printf("%.2f\n", gao(s, p));
	}
	return 0;
}



从jieba分词到BERT-wwm——中文自然语言处理(NLP)基础分享系列(12) 今天是本系列的最后一期,完整代码呈现Huggingface transformers平台上微调BERT-wwm-ext的过程方法。 阅读详情

相关推荐

Linux内存压力测试工具【memtester】详且精

对Linux下的压力测试工具memtester有一个比较人性化的概述,以及避坑心得。

weixin_44118923的博客 1万+

POJ 2349 Arctic Network

POJ 2349 Arctic Network Description The Department of National Defence (DND) wishes to connect several northern outposts by a wireless network. Two different communication technologies are to be used ...

旺崽的博客 3093

ansys命令流力磁耦合仿真

文章目录前言一、力磁耦合仿真流程二、静力学仿真三、力磁耦合模型构建四、静磁学仿真总结 前言 一、力磁耦合仿真流程 力磁耦合有限元仿真流程中,首先进行静力学仿真,经过前处理模块、分析计算模块和后处理模块提取三维模型单元应力,然后根据力磁耦合方程中,通过matlab将单元应力导入到磁导率与应力的关系式中,得到单元的相对磁导率。最后采用载荷传递耦合方式,进行静磁学模拟仿真,分析计算得到该载荷下试件的磁场分布。,如下图所示为力磁耦合仿真流程图: 二、静力学仿真 下图为中心预制条形缺陷的Q235钢板试..

wsfwsf128的博客 2661

[POJ 2349] Arctic Network

[题目链接] http://poj.org/problem?id=2349 [算法] 首先,我们发现答案是具有单调性的,所以我们可以二分答案 检验时,我们将所有距离小于二分值的点连边,然后判断联通块数量是否小于等于S即可 [代码] #include <algorithm> #inc...

181

华为路由器 VRRP主备配置

3、R3 出口路由器。

一直被模仿,从未被超越 5584

【Excel VBA 编程】表格内自动生成进度条

在表格中生成进度条,进度条需要自适应单元格的宽度,根据不同进度区间变换颜色,并且按照进度数据大小显示其长短

wei1019的专栏 1519

poj2349 Arctic Network

题目链接:http://poj.org/problem?id=2349 题意:有s颗星球,有p个雷达站,如果雷达站在同一个星球上,不需要距离就可以直接通信,如果不在一个星球上,他们之间的距离不能超过D,现在给你p个雷达站的坐标,如果要把这整个雷达站连通,问你最小的D是多少 解析:首先要联通全部雷达站,肯定是最小生成树,然后让你求一个D值,雷达站之间连边,相当于如果距离大于D就不能相连,那么可以先

22h's Blog 433

利用Python实现纬度加权平均(即NCL中的wgt_areaave)

当处理全球数据的时候,最常见的分析就是全球、北半球平均了,这时候一定要注意要根据纬度等信息进行加权,求加权平均,要不然结果肯定会不准。但是对于Python中,常规的计算包里面是没有的,或许现在有其他包可以实现,也可以告诉我~。

记录基于python语言处理气象问题的一些代码,包括不限于气象数据读取、机器学习和深度学习建模。 5744

【POJ】[2349]Arctic Network

理解题意之后也并不算太难 大意是给了一些坐标来求最小生成树 然而让输出的是最大边的值,而因为还有卫星可供通讯 所以只需要当有P个点S个卫星时 共P-1条边里舍去S-1条大的边所以这里我感觉用Kruskal更好一些 而且当取了 P-1-(S-1)==P-S条边时,这一条边便是所要求边 不需要进行后续操作了

BoilTask Talk Show 531

Word2vec核心模型精讲:CBOW与Skip-gram

Word2vec是Google提出的词向量模型,通过CBOW和Skip-gram两种神经网络架构将词汇映射到低维向量空间。CBOW通过上下文预测中心词,训练速度快但高频词表现更好;Skip-gram则相反,通过中心词预测上下文,适合处理生僻词。为解决softmax计算效率问题,Word2vec引入基于哈夫曼树的Hierarchical Softmax优化技术,将复杂度从O(V)降至O(logV)。文章详细解析了两种模型的原理差异,并演示了哈夫曼树的构造过程及其在词向量训练中的关键作用,这种结合词频的优

Trisyp的博客 529

【OpenClaw从入门到精通】第41篇:2026年4月最新版——从零开始搭建你的第一个安全AI助理(保姆级实战教程)

2026年3月CNCERT联合发布《OpenClaw安全使用实践指南》后,安全部署成为OpenClaw使用的核心前提。本文针对新手及进阶用户,基于官方安全指引,提供三套实战部署方案:阿里云一键部署(新手首选)、Docker容器隔离部署(进阶推荐)、本地安全安装(测试专用),并详解阿里云百炼Coding Plan API接入流程。全文涵盖环境准备、分步实操、安全加固、问题排查等全流程,所有命令可直接复制执行,无需依赖外部代码库。通过本文,读者可零基础搭建安全隔离的OpenClaw AI助理,兼顾实用性与安全性

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2198

POJ2349 Arctic Network

题目链接:http://poj.org/problem?id=2349 求最小生成树中第S大的边,结点给的是坐标(坑爹啊) #include #include #include #include #include #include using namespace std; #define N 500 struct edge { int u, v; double w;

浅雨歌 515

HFSS实战项目——Ku波段微带发夹线滤波器

保姆级教程!!!看完必会,非常详细!!!Ku频段5阶切比雪夫微带线带通滤波器的仿真实例。首先介绍了滤波器的技术指标和基本理论知识,重点介绍了滤波器的耦合系数和外部品质因数。建立了谐振器的设计模型、耦合系数与谐振器间距的设计模型、外部品质因数与抽头位置的设计模型和滤波器整体电路的模型。详细介绍了谐振器设计模型的建立步骤。

2401_87464239的博客 3041

Arctic Network POJ - 2349

The Department of National Defence (DND) wishes to connect several northern outposts by a wireless network. Two different communication technologies are to be used in establishing the network: ev...

aocan6909的博客 142

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

poj 2349 Arctic Network

Arctic Network Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 5764 Accepted: 2007 题目链接:http://poj.org/problem?id=2349 Description The Department

优快云515的专栏 1130

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【POJ 2349 --- Arctic Network】prim || kruskal

【POJ 2349 --- Arctic Network】prim || kruskal 题目来源:点击进入【POJ 2349 — Arctic Network】 Description The Department of National Defence (DND) wishes to connect several northern outposts by a wireless network...

来日浅谈的博客 542

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

poj 2349 Arctic Network

http://poj.org/problem?id=2349 Arctic Network Time Limit:2000MS Memory Limit:65536K Total Submissions:12544 Accepted:4097 Description The Department of Nation...

deyou1988的专栏 134

POJ-2349-Arctic Network

链接:https://vjudge.net/problem/POJ-2349#author=clzls 题意: 国防部(DND)要用无线网络连接北部几个哨所。两种不同的通信技术被用于建立网络:每一个哨所有一个无线电收发器,一些哨所将有一个卫星频道。 任何两个有卫星信道的哨所可以通过卫星进行通信,而不管他们的位置。同时,当两个哨所之间的距离不超过D时可以通过无线电通讯,D取决于对收发器的功率。...

weixin_33705053的博客 118

POJ - 2349 Arctic Network

The Department of National Defence (DND) wishes to connect several northern outposts by a wireless network. Two different communication technologies are to be used in establishing the net...

GxhZxx的博客 316

POJ-2349 Arctic Network

Arctic Network Time Limit: 2000MS   Memory Limit: 65536K Description The Department of National Defence (DND) wishes to connect several northern outposts by a wireless network. Tw

JSure的代码库 962

POJ 2349[Arctic Network]

这个题Prim是比较快的,用Kruskal要700+ms,幸亏时限是2000ms…… 这个题就是建图之后求最小生成树中第p-s小的那条边,用kruskal比较容易理解~ Var a,b,f,x,y:array[1..1000000]of longint; e:array[1..1000000]of extended; n,m,an...

161
上一篇: [Java学习]Java中String的内存机制/String的比较
下一篇: [poj2777 Count Color]线段树
bit_line
博客等级 码龄12年 33粉丝 150原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值