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 命令行选项 问题描述 请你写一个命令行分析程序,用以分析给定的命令行里包含哪些 ...
随机推荐
- IDEA最常用快捷键汇总+快速写出Main函数
IDEA可以说是当下Java程序员日常开发的神器,但是想要发挥这款神器的牛逼威力,必须得熟练使用它的各种快捷键才行.本篇总结下使用IDEA(也就是IntelliJ IDEA )进行日常开发中最常用的快 ...
- 快速搭建 SpringCloud 微服务开发环境的脚手架
本文适合有 SpringBoot 和 SpringCloud 基础知识的人群,跟着本文可使用和快速搭建 SpringCloud 项目. 本文作者:HelloGitHub-秦人 HelloGitHub ...
- C#学习笔记03--循环和一维数组
一.循环(重点) 什么时候用循环? 想让一段代码执行多次, 这段代码可能不一样但是一定有一个规律. 1.while 循环 格式: while(循环条件) { 循环执行的代码; } 循环的机制: 当 ...
- supervisor 安装配置详解
一.安装 源码安装 先下载最新的supervisor安装包:https://pypi.python.org/pypi/supervisor , 如: (python3命令为 pip install g ...
- Tab Bar Control 的封装和切换
见视频0414 思路: 1.删除系统自带的TabBar.2.添加UIView,做成自定义的TabBar,覆盖原来的TabBar.3.添加对于的button和切换事件.
- 实战webpack系列说明
01.概念股 本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler). 当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(d ...
- linux 系统自动定制运行 crontab
在UNIX下怎样实现和Windows下“计划任务”一样的功能 $crontab -e 编辑脚本 $crontab -l 察看脚本 用$crontab -e 编辑脚本,加入下列行 :分 小时 星期 ...
- html汇总
- 转:关于JAVA项目中CLASSPATH路径详解
在dos下编译Java程序,就要用到classpath这个概念,尤其是在没有设置环境变量的时候.classpath就是存放.class等编译后文件的路径. javac:如果当前你要编译的Java文件中 ...
- Spring bean 初始化失败
在一个*context.xml 配置文件 A 中, 有个定义的bean B, 把 A 添加到 application-context.xml 中,发现B不能正常初始化. 解决办法: 添加 <co ...