无线网络

时间限制: 1.0s
内存限制: 256.0MB
 
问题描述
  目前在一个很大的平面房间里有 n 个无线路由器,每个无线路由器都固定在某个点上。任何两个无线路由器只要距离不超过 r 就能互相建立网络连接。
  除此以外,另有 m 个可以摆放无线路由器的位置。你可以在这些位置中选择至多 k 个增设新的路由器。
  你的目标是使得第 1 个路由器和第 2 个路由器之间的网络连接经过尽量少的中转路由器。请问在最优方案下中转路由器的最少个数是多少?
 
输入格式
  第一行包含四个正整数 n,m,k,r。(2 ≤ n ≤ 100,1 ≤ k ≤ m ≤ 100, 1 ≤ r ≤ 108)。
  接下来 n 行,每行包含两个整数 xi 和 yi,表示一个已经放置好的无线 路由器在 (xi, yi) 点处。输入数据保证第 1 和第 2 个路由器在仅有这 n 个路由器的情况下已经可以互相连接(经过一系列的中转路由器)。
  接下来 m 行,每行包含两个整数 xi 和 yi,表示 (xi, yi) 点处可以增设 一个路由器。
  输入中所有的坐标的绝对值不超过 108,保证输入中的坐标各不相同。
 
输出格式
  输出只有一个数,即在指定的位置中增设 k 个路由器后,从第 1 个路 由器到第 2 个路由器最少经过的中转路由器的个数。
 
样例输入
5 3 1 3
0 0
5 5
0 3
0 5
3 5
3 3
4 4
3 0
 
样例输出
2
 
解题:搜索,注意数据范围,小心溢出
 #include <bits/stdc++.h>
#define LL long long
using namespace std;
const int maxn = ;
struct point {
int x,y,isadded;
} p[maxn*maxn];
int n,m,k,d[maxn];
double r;
double getDis(int i,int j) {
double tmp = (LL)(p[i].x - p[j].x)*(p[i].x - p[j].x);
tmp += (LL)(p[i].y - p[j].y)*(p[i].y - p[j].y);
return sqrt(tmp);
}
struct node {
int id,pass,added;
node(int x = ,int y = ,int z = ) {
id = x;
pass = y;
added = z;
}
};
queue<node>q;
int bfs(){
memset(d,0x3f,sizeof(d));
while(!q.empty()) q.pop();
d[] = ;
q.push(node(,,));
while(!q.empty()){
node now = q.front();
q.pop();
for(int i = ; i < n+m; ++i)
if(i != now.id && getDis(i,now.id) <= r&& now.added+p[i].isadded <= k && d[i] > now.pass+){
d[i] = now.pass + ;
//cout<<i<<" "<<d[i]<<endl;
q.push(node(i,d[i],now.added+p[i].isadded));
}
}
return d[] - ;
}
int main() {
while(~scanf("%d %d %d %lf",&n,&m,&k,&r)) {
for(int i = ; i < n + m; ++i) {
scanf("%d %d",&p[i].x,&p[i].y);
p[i].isadded = i >= n?:;
}
cout<<bfs()<<endl;
}
return ;
}

CCF模拟 无线网络的更多相关文章

  1. 【CCF】无线网络 搜索+思维

    #include<iostream> #include<cstdio> #include<cstring> #include<string> #incl ...

  2. 【CCF】无线网络 搜索

    [思路] 多个起点同时四周扩展广搜,注意会爆int [AC] #include<iostream> #include<cstdio> #include<cstring&g ...

  3. CCF CSP 201403-4 无线网络

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201403-4 无线网络 问题描述 目前在一个很大的平面房间里有 n 个无线路由器,每个无线路 ...

  4. NOIp 2014 #4 无线网络发射器选址 Label:模拟

    题目描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的129 条东西向街道和129 条南北向街道所形成的网格状,并且相邻 ...

  5. 卓越精Forsk.Atoll.v3.3.2.10366无线网络

    卓越精Forsk.Atoll.v3.3.2.10366无线网络 Atoll是法国 FORSK 公司开发的,是一个全面的.基于Windows的.支持2G.3G.4G多种技术,用户界面 友好的无线网络规划 ...

  6. ns3模拟无线Ad hoc 网络通信

    Ad hoc网络 Ad hoc网是一种多跳的.无中心的.自组织无线网络,又称为多跳网(Multi-hop Network).无基础设施网(Infrastructureless Network)或自组织 ...

  7. ZigBee无线网络技术在小区路灯照明系统的应用

    小区路灯照明系统是楼宇智能的一部分,但受制于布线.成本等的问题,难以得以实施.随着计算机技术的迅猛发展,无线网络技术越来越成熟,ZigBee无线网络成本低.功耗低.传输距离远等的特点,非常适合在无线路 ...

  8. NOIP2014无线网络发射器选址改编1

    问题描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的129条东西向街道和129条南北向街道所形成的网格状,并且相邻的平 ...

  9. noip2014无线网络发射器选址

    题目描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的 129 条东西向街道和 129 条南北向街道所形成的网格状,并且 ...

随机推荐

  1. java webproject中logback换配置文件的路径

    本人小站点:   http://51kxd.com/  欢迎大家不开心的时候訪问訪问,调节一下心情 web.xml中配置: <!-- windows  logback.xml文件跟web容器(比 ...

  2. NPOI操作Excel 004:写入空Excel(添加保存提示框)

    前文说道写入excel的样例,当中保存Excle后须要添加提示框.让用户自己选择保存路径,做改动例如以下. 引用的dll等前面已经说过了, 直接看代码: protected void Btn_Writ ...

  3. kindeditor 不能编辑 问题

    /*显示上传窗体*/ function ShowUplodToDaily() { var _sdata = grid.getSelecteds(); if (_sdata) { /*创建编辑器*/ v ...

  4. Asp.Net中使用水晶报表(下)

    Asp.Net中使用水晶报表(下)   使用PUSH模式 我们采用下面的几步使用Push模式执行水晶报表: 1. 设计一个DataSet 2. 创建一个.rpt文件同时将其指定给上一步建立的DataS ...

  5. js变量作用域和闭包的示例

    <script> /* js是函数级作用域,在函数内部的变量,内部都能访问, 外部不能访问内部的,但是内部可以访问外部的变量 闭包就是拿到本不该属于他的东西,闭包会造成内存泄漏,你不知道什 ...

  6. jquery easyui a标记方法传值问题

    今天开发一个功能,其操作的按钮式是一个点击的a标记,并且是动态生成的,其点击方法需要传参数具体代码如下 {field:'time',title:'日程时间',width:200,align:'cent ...

  7. <Sicily>Brackets Matching

    一.题目描述 Let us define a regular brackets sequence in the following way: Empty sequence is a regular s ...

  8. JS中的switch case

    function GetDepartmentName(type) { switch (type) { case DepartMentQian: alert($('#DepartMentQian').v ...

  9. DNA Sequence POJ - 2778 AC 自动机 矩阵乘法

    定义重载运算的时候一定要将矩阵初始化,因为这个调了一上午...... Code: #include<cstdio> #include<algorithm> #include&l ...

  10. 初学javascript,写一个简单的阶乘算法当作练习

    代码如下: <script> var a = prompt("请输入值"); function mul(a){ if(a==1){ return 1; } return ...