秒懂算法 | 无线网络

简介: 高级数据结构算法实例分析

640.jpg

01、实例分析:人工湖公路

问题描述:

东南亚发生了一场地震,ICPC组织通过计算机建立的无线网络遭到毁灭性的影响——网络中所有的计算机都损坏了。在陆续维修计算机之后,无线网络又逐渐开始运作。由于硬件的制约,每两台计算机只有保持不超过d米的距离,才可以直接进行通信。但是每台计算机又可以作为其他两台计算机通信的中介点,也就是说,假设A计算机与B计算机不在能直接通信的范围内,但是它们可以通过同时能与A和B计算机通信的C计算机建立间接通信关系。

在维修过程中,维修者可以进行两种操作: 维修一台计算机或者检测两台计算机之间是否能够通信。你的任务就是解答每一次的检测操作。

输入:

第一行包含两个整数N和d(1≤N≤1001,0≤d≤20000)。N表示计算机的数量,计算机编号从1开始到N,d为两台能直接通信的计算机所需保持距离的最大值。在接下来的N行,每行包含两个整数xi,yi(0≤xi,yi≤10000),表示N台计算机的坐标。接下来的一系列的输入都表示维修者的操作,每种操作都是以下两种中的一种。

  1. "O p" (1≤p≤N),表示维修第p台计算机。

  2. "S p q" (1≤p,q≤N), 表示检测p与q计算机是否能够通信。

输入不超过300000 行。

输出:

对于每组检测操作,若两台计算机能进行通信,则输出SUCCESS,否则输出FAIL。

输入样例:

4 1
0 1
0 2
0 3
0 4
O 1
O 2
O 4
S 1 4
O 3
S 1 4

输出样例:


FAIL
SUCCESS

解题思路:

(1) 本题的基本解题方法是通过并查集划分集合,根据每对点(每对计算机)的从属关系判断点(计算机)是否连通(通信)。

(2) 需根据计算机的通信范围确定每对计算机是否可以直接通信。

(3) 需注意的是,必须保证可以进行通信的每对计算机是完好无损的。

本题只要能正确建图(建立计算机间是否通信的关系),再通过并查集的知识就可以解题了,注意初始时每台计算机都是损坏的。解题步骤如下。

(1) 输入每个点的坐标后,首先根据计算机的通信范围建立每对计算机的连通关系。

(2) 当输入的操作为维修时,就将本台计算机标记为完好的,并将其与所有与其可以通信的且完好的计算机进行并操作,那么可通信的计算机都在同一棵树中,具有相同的根结点。

(3) 当输入的操作为询问时,若两台计算机具有相同的根结点,则可通信,否则不可通信。

参考程序:

#include<stdlib.h>
#include<math.h>
int map[1005][1005];
int mul(int x)
//求平方数的函数
return x *x;
int f[1005];int find(int x)
if(f[x]!=x)f[x]=find(f[x]);return f[x];
void make(int a,int b)
int fl=find(a);
int f2=find(b);if(f1!=f2)
f[f2]=f1;
void check(int a,int b)
//检验 a 与 b 是否连通并输出的函数
int fl=find(a);int f2=find(b);if(fl==f2)
printf("SUCCESS\n");return ;
printf("FAIL\n");
int main()
int n,flag[1005];
//flag 数组用于标记计算机是否完好
double d;
memset(map,0,sizeof(map));
memset(flag,0,sizeof(flag)) ;
scanf("号d号lf",&n,&d) ;
int x[1005],y[1005],i,j,k;for(i=1;i<=n;i++)
scanf("号d%d",&x[i],&y[il);for(i=l;i<=n;i++)
f[i]=i;for(i=1;i<n;i++)
//用两层 for 循环对可直接通信的两台计算机进行标记
for(j=i+1;j<=n;j++)if(sqrt((double) (mul(x[i]-x[j]) +mul(y[il-y[j]) ))<=d)
map[i][j]=1;
map[j][i]=1;
char s[5];
int a,b;
while(scanf("s",s)!=EOF)
if(strcmp(s,"O")== 0)
scanf("d",&a);flag[a]=1;for(i=l;i<=n;i++)if(map[illal&&flag[i])//将可直接通信的并且完好的计算机合并为同一个集合make(a,i);
else
scanf("各d号d",&a,&b);check(a,b);
//判断并输出结果
目录
相关文章
|
2月前
|
机器学习/深度学习 人工智能 算法
深度学习入门:理解神经网络与反向传播算法
【9月更文挑战第20天】本文将深入浅出地介绍深度学习中的基石—神经网络,以及背后的魔法—反向传播算法。我们将通过直观的例子和简单的数学公式,带你领略这一技术的魅力。无论你是编程新手,还是有一定基础的开发者,这篇文章都将为你打开深度学习的大门,让你对神经网络的工作原理有一个清晰的认识。
|
3天前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
11 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
|
5天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于贝叶斯优化CNN-LSTM网络的数据分类识别算法matlab仿真
本项目展示了基于贝叶斯优化(BO)的CNN-LSTM网络在数据分类中的应用。通过MATLAB 2022a实现,优化前后效果对比明显。核心代码附带中文注释和操作视频,涵盖BO、CNN、LSTM理论,特别是BO优化CNN-LSTM网络的batchsize和学习率,显著提升模型性能。
|
2月前
|
机器学习/深度学习 人工智能 算法
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作界面,实现用户上传一张鸟类图像,识别其名称。
91 12
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
|
15天前
|
机器学习/深度学习 算法 数据挖掘
基于GWO灰狼优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
本项目展示了基于分组卷积神经网络(GroupCNN)和灰狼优化(GWO)的时间序列回归预测算法。算法运行效果良好,无水印展示。使用Matlab2022a开发,提供完整代码及详细中文注释。GroupCNN通过分组卷积减少计算成本,GWO则优化超参数,提高预测性能。项目包含操作步骤视频,方便用户快速上手。
|
16天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于WOA鲸鱼优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
本项目展示了一种基于WOA优化的GroupCNN分组卷积网络时间序列预测算法。使用Matlab2022a开发,提供无水印运行效果预览及核心代码(含中文注释)。算法通过WOA优化网络结构与超参数,结合分组卷积技术,有效提升预测精度与效率。分组卷积减少了计算成本,而WOA则模拟鲸鱼捕食行为进行优化,适用于多种连续优化问题。
|
27天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于GA遗传优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
该算法结合了遗传算法(GA)与分组卷积神经网络(GroupCNN),利用GA优化GroupCNN的网络结构和超参数,提升时间序列预测精度与效率。遗传算法通过模拟自然选择过程中的选择、交叉和变异操作寻找最优解;分组卷积则有效减少了计算成本和参数数量。本项目使用MATLAB2022A实现,并提供完整代码及视频教程。注意:展示图含水印,完整程序运行无水印。
|
18天前
|
机器学习/深度学习 算法 5G
基于BP神经网络的CoSaMP信道估计算法matlab性能仿真,对比LS,OMP,MOMP,CoSaMP
本文介绍了基于Matlab 2022a的几种信道估计算法仿真,包括LS、OMP、NOMP、CoSaMP及改进的BP神经网络CoSaMP算法。各算法针对毫米波MIMO信道进行了性能评估,通过对比不同信噪比下的均方误差(MSE),展示了各自的优势与局限性。其中,BP神经网络改进的CoSaMP算法在低信噪比条件下表现尤为突出,能够有效提高信道估计精度。
29 2
|
1月前
|
传感器 算法 C语言
基于无线传感器网络的节点分簇算法matlab仿真
该程序对传感器网络进行分簇,考虑节点能量状态、拓扑位置及孤立节点等因素。相较于LEACH算法,本程序评估网络持续时间、节点死亡趋势及能量消耗。使用MATLAB 2022a版本运行,展示了节点能量管理优化及网络生命周期延长的效果。通过簇头管理和数据融合,实现了能量高效和网络可扩展性。
|
10天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于贝叶斯优化卷积神经网络(Bayes-CNN)的多因子数据分类识别算法matlab仿真
本项目展示了贝叶斯优化在CNN中的应用,包括优化过程、训练与识别效果对比,以及标准CNN的识别结果。使用Matlab2022a开发,提供完整代码及视频教程。贝叶斯优化通过构建代理模型指导超参数优化,显著提升模型性能,适用于复杂数据分类任务。