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 命令行选项 问题描述 请你写一个命令行分析程序,用以分析给定的命令行里包含哪些 ...
随机推荐
- windows 10安装和配置caffe教程 | Install and Configure Caffe on windows 10
本文首发于个人博客https://kezunlin.me/post/1739694c/,欢迎阅读! Install and Configure Caffe on windows 10 Part 1: ...
- su root
1. 命令行方式 ansible zabbix_agents --become --become-method=su -K -m shell -a 'whoami' 2. 变量方式 [zabbix_a ...
- toString() 方法的参数
除开null 和 undefined之外所有的数据类型都是拥有toString方法的. 通常情况下我们使用toString()方法的时候都是不用传递参数的,但是Number类型的toString方法是 ...
- 2019-10-23:渗透测试,基础学习,DVWA,Medium和Hight级别sql注入
VWA的Medium和Hight级别sql注入 一,Medium级 服务端代码 <?php if( isset( $_POST[ 'Submit' ] ) ) { // Get inp ...
- tar文件归档
tar是UNIX和类UNIX系统上的压缩,备份工具, 名字来源于Tape archive--磁盘归档,最初的时候是用来将数据储存,备份到磁带上的.而今最简单的备份方法是添加新的磁盘或者在云端存储,但即 ...
- xpath选择兄弟节点、返回上一级和选择多个属性
本文链接:https://blog.csdn.net/ZincZhang/article/details/80248297选择兄弟节点选择前N位的div标签 preceding-sibling::di ...
- 最全 HTTP 安全响应头设置指南
销售“安全记分卡”的公司正在崛起,并已开始成为企业销售的一个因素.这些公司组合使用 HTTP 安全报头和 IP 信誉来进行评级.不过,在很大程度上,公司的得分取决于对外开放网站上设置的安全响应报头.本 ...
- 10-kubernetes serveraccount RBAC
目录 认证安全 serviceAccountName 和 userAccount serviceaccount 创建 使用admin 的SA 测试 URL访问kubernetes资源 APIserve ...
- mybatis精讲(五)--映射器组件
目录 前言 标签 select insert|update|delete 参数 resultMap cache 自定义缓存 # 加入战队 微信公众号 前言 映射器之前我们已经提到了,是mybatis特 ...
- MATLAB工具包——curvelet变换的理解(转)
curvelet下载的curvelet工具包,有以下三个文件:fdct_usfft_matlab.fdct_wrapping_matlab.mecv三个文件夹添加到matlab路径中即可. curve ...