CCF-CSP题解 201403-4 无线网络
新建不超过\(k\)个无线路由器,求使路由器1、2连通最少的中间路由器。
首先常规建图,将相距不超过\(r\)的路由器(包括新建的)相连。
想到了分层\(dijkstra\)。类似的,作\(bfs\)时记录已经经过的新建路由器个数\(b\)。\(queue\)内节点的形式就是当前路由器编号、经过的新建路由器个数、经过的路由器个数:\(<a,b,dis>\)。\(vis[a][b]\)数组可以不包括第三维\([dis]\),因为\(queue\)中的\(dis\)是递增的,再次到达\([a][b]\)的状态时,不会产生更好的结果。也可以加上,\(dis\)最多为100,200*100*100不会超时。
#include<bits/stdc++.h>
const int maxn = 100;
const int maxm = 100;
using namespace std;
int n, m, k;
double r;
struct tNode
{
double x, y;
int type;
};
tNode node[maxn + maxm + 10];
int to[(maxn + maxm) * (maxn + maxm) * 2 + 10];
int nex[(maxn + maxm) * (maxn + maxm) * 2 + 10];
int head[maxn + maxm + 10], cnt = 0;
void addEdge(int x, int y)
{
to[cnt] = y; nex[cnt] = head[x]; head[x] = cnt++;
to[cnt] = x; nex[cnt] = head[y]; head[y] = cnt++;
}
int vis[maxn + maxm + 10][maxm + 10];
struct tNNode
{
int a, b, dis;
tNNode(int aa, int bb, int ddis): a(aa), b(bb), dis(ddis){}
};
int main()
{
scanf("%d%d%d%lf", &n, &m, &k, &r);
for (int i = 1; i <= n + m; i++)
{
scanf("%lf%lf", &node[i].x, &node[i].y);
node[i].type = (i <= n) ? 0 : 1;
}
memset(head, -1, sizeof(head));
for (int i = 1; i <= n + m; i++)
{
for (int j = i + 1; j <= n + m; j++)
{
double dist = sqrt(pow((node[i].x - node[j].x), 2.0) + pow((node[i].y - node[j].y), 2.0));
if (dist <= r)
addEdge(i, j);
}
}
memset(vis, 0, sizeof(vis));
queue<tNNode> q;
q.push(tNNode(1, 0, 0));
vis[1][0] = 1;
while (true)
{
tNNode x = q.front(); q.pop();
int a = x.a, b = x.b, dis = x.dis;
if (a == 2)
{
printf("%d\n", dis - 1);
break;
}
for (int i = head[a]; i != -1; i = nex[i])
{
int l = to[i];
if (node[l].type == 0)
{
if (!vis[l][b])
{
q.push(tNNode(l, b, dis + 1));
vis[l][b] = 1;
}
}
else
{
if (b < k && !vis[l][b + 1])
{
q.push(tNNode(l, b + 1, dis + 1));
vis[l][b + 1] = 1;
}
}
}
}
return 0;
}
CCF-CSP题解 201403-4 无线网络的更多相关文章
- CCF CSP 201403-4 无线网络
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201403-4 无线网络 问题描述 目前在一个很大的平面房间里有 n 个无线路由器,每个无线路 ...
- CCF CSP 201709-4 通信网络
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201709-4 通信网络 问题描述 某国的军队由N个部门组成,为了提高安全性,部门之间建立了M ...
- CCF CSP 201503-4 网络延时
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201503-4 网络延时 问题描述 给定一个公司的网络,由n台交换机和m台终端电脑组成,交换机 ...
- CCF模拟 无线网络
无线网络 时间限制: 1.0s 内存限制: 256.0MB 问题描述 目前在一个很大的平面房间里有 n 个无线路由器,每个无线路由器都固定在某个点上.任何两个无线路由器只要距离不超过 r 就能互相 ...
- 关于NOIP2014“无线网络发射器选址”一题的衍生题目的思考及思维方向
无线网络发射器选址 题目描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的129 条东西向街道和129 条南北向街道所形 ...
- NOIP2014无线网络发射器选址改编1
问题描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的129条东西向街道和129条南北向街道所形成的网格状,并且相邻的平 ...
- CCF CSP 201703-3 Markdown
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201703-3 Markdown 问题描述 Markdown 是一种很流行的轻量级标记语言(l ...
- CCF CSP 201312-3 最大的矩形
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201312-3 最大的矩形 问题描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i( ...
- CCF CSP 201609-3 炉石传说
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201609-3 炉石传说 问题描述 <炉石传说:魔兽英雄传>(Hearthston ...
- CCF CSP 201403-3 命令行选项
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201403-3 命令行选项 问题描述 请你写一个命令行分析程序,用以分析给定的命令行里包含哪些 ...
随机推荐
- 源码分析RocketMQ消息轨迹
目录 1.发送消息轨迹流程 1.1 DefaultMQProducer构造函数 1.2 SendMessageTraceHookImpl钩子函数 1.3 TraceDispatcher实现原理 2. ...
- mac软件推荐及chrome插件推荐
通用软件 Alfred (超级好用的效率工具) 用mac这个软件一定要装,用习惯之后加上电脑本身的快捷键.效率提升的飞起. Alfred我常使用的功能有: 搜索chrome的书签 我搜索的书签大概分为 ...
- (二)OpenStack---M版---双节点搭建---数据库安装和配置
↓↓↓↓↓↓↓↓视频已上线B站↓↓↓↓↓↓↓↓ >>>>>>传送门 本章节只在Controller节点执行 1.安装Mariadb数据库来存储信息 2.NoSQL数 ...
- 使用python脚本执行地理处理工具
桌面ArcGIS包含800多种可在Python脚本中运行的地理处理工具. 通过Python脚本来运行地理处理工具,可以处理复杂的工作和执行批处理任务. 案例一:使用脚本执行地理处理工具(以裁剪为例) ...
- Batch Normalization详解
目录 动机 单层视角 多层视角 什么是Batch Normalization Batch Normalization的反向传播 Batch Normalization的预测阶段 Batch Norma ...
- 记一次将本地工程上传到github的过程
记一次将本地工程上传到github的过程 1.首先,进入本地工程所在文件夹,运行git init将工程初始化为git仓库: XH@DESKTOP-82MT9LU MINGW64 ~/Desktop/t ...
- 【开发工具 - MySQL】之不能插入中文的问题
新安装的MySQL数据库,在安装的时候设置了字体为UTF8,但在使用insert语句插入中文的时候还是会报错. 具体解决方法:在MySQL控制台中输入以下设置代码: SET character_set ...
- Netty源码分析之ChannelPipeline(二)—ChannelHandler的添加与删除
上篇文章中,我们对Netty中ChannelPipeline的构造与初始化进行了分析与总结,本篇文章我们将对ChannelHandler的添加与删除操作进行具体的的代码分析: 一.ChannelHan ...
- tomcat部署项目,详细!
一.导出war包 1.先导出项目的war包(idea为例) 点+号,选择 之后点ok,确定,关闭窗口,回到idea主页面 在弹出窗口中选择新建的war,选build 之后在war导出目录,找到这个wa ...
- Docker简介与安装
简介与安装 简介 Docker是什么 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置.作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的 ...