路由器安置

一条街道安装WIFI,需要放置M个路由器。整条街道上一共有N户居民,分布在一条直线上,每一户居民必须被至少一台路由器覆盖到。现在的问题是所有路由器的覆盖半径是一样的,我们希望用覆盖半径尽可能小的路由器来完成任务,因为这样可以节省成本。

输入格式:

输入文件第一行包含两个整数M和N,以下N行每行一个整数Hi表示该户居民在街道上相对于某个点的坐标。

输出格式:

输出文件仅包含一个数,表示最小的覆盖半径,保留一位小数。

样例输入:

2 3
1
3
10

样例输出:

1.0

题解:

二分直径,每次找到没有被覆盖的点

#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int m,n;
long long a[110000];

bool check(long long w)
{
    int temp1=0,temp2=1;
    while((temp1=upper_bound(a,a+n,a[temp1]+w)-a)<n) //返回第一个比a[temp1]+w大的位置,如果覆盖不了,就继续+w,反之位置++,以此来找到刚好满足条件的数
        if(++temp2>m)
            return 0;

    return 1;
}

double find()
{
    int l=0, r=a[n-1]-a[0];
    while(l<r)          //二分,判断直径的关键条件
    {
        int mid=(l+r)/2;
        if(check(mid))
            r=mid;                    //未满足循环条件,说明此数过大,要找到的数在左边
        else l=mid+1;            //设置的路由器大于m个,要找到的数在右边
    }
    return l*1.0/2;
}

int main()
{
    ios::sync_with_stdio(false);
    cout<<setiosflags(ios::fixed)<<setprecision(1);
    cin>>m>>n;
    for(int i=0;i<n;i++)
        cin>>a[i];
    sort(a,a+n);
    cout<<find()<<endl;

    return 0;
}
时间: 2024-08-14 02:24:27

路由器安置的相关文章

路由器安置(Routing)

描述 一条街道安装无线网络,需要放置M个路由器.整条街道上一共有N户居民,分布在一条直线上,每一户居民必须被至少一台路由器覆盖到.现在的问题是所有路由器的覆盖半径是一样的,我们希望用覆盖半径尽可能小的路由器来完成任务,因为这样可以节省成本.(1 ≤ N, M ≤ 100000) 分析 首先这种问题可以采用二分答案的方法. 尝试当前路由器覆盖范围能否覆盖所有居民点. 那么这里如果采用二分半径的方法, 会出现实数, 所以采用 wxjlzbcd 的方法, 采用二分直径, 最后实数折半输出. 在尝试答案

路由器安置(Routing)

题目 [问题描述] 一条街道安装无线网络,需要放置M个路由器.整条街道上一共有N户居民,分布在一条直线上,每一户居民必须被至少一台路由器覆盖到.现在的问题是所有路由器的覆盖半径是一样的,我们希望用覆盖半径尽可能小的路由器来完成任务,因为这样可以节省成本. [输入数据] 输入文件第一行包含两个整数M和N,以下N行每行一个整数Hi表示该户居民在街道上相对于某个点的坐标. [输出数据] 输出文件仅包含一个数,表示最小的覆盖半径,保留一位小数. [样例输入] 2 3 1 3 10 [样例输出] 1.0

总结-分治

分治 分治法是一种效率很高的算法, 往往带有一个log级的复杂度. 1. CDQ分治 CDQ分治可以应用到带有修改操作的题目中, 对操作进行分治, 通过考虑前一半操作对后一半操作的影响达到分治的目的. 应用的条件比较苛刻 BZOJ-1492-货币兑换cash-NOI2007-CDQ分治 优化dp BZOJ-2716-天使玩偶angel-CDQ分治 能这样做还得益于曼哈顿距离的特殊性 BZOJ-2001-city城市建设-HNOI2010-CDQ分治 因为最小生成树Kruskal算法是基于边的算法

思科路由器常用命令

1. switch配置命令(1)模式转换命令用户模式----特权模式,使用命令"enable"特权模式----全局配置模式,使用命令"config t"全局配置模式----接口模式,使用命令"interface+接口类型+接口号"全局配置模式----线控模式,使用命令"line+接口类型+接口号"注:用户模式:查看初始化的信息.特权模式:查看所有信息.调试.保存配置信息全局模式:配置所有信息.针对整个路由器或交换机的所有接口接

美国思科路由器预置监控后门被中国铲除

微软,思科,硬盘厂家,美国棱镜门监控影子无处不在.不知道思科提供给美国的产品和提供给中国的产品是不是有一样的后门. 2012年,中国中央政府采购中心的名单上共有60款思科产品,而这一数字在2014年采购名单中骤降为零. 美国思科公司的信息产品在中国市场具有极高的占有率,其路由器产品几乎参与了中国所有基础信息网络和重要信息系统的重大项目建设.而一直以来,包括路由器在内的思科信息产品存在严重安全漏洞的报告屡屡被披露.近十年来,仅CVE网站公开发布的有关思科产品的漏洞就多达1300余个,其中,路由器的

Cisco-HSRP 热备份路由器协议-配置实例

同样的,首先做一些理论的扫盲.最起码要知道自己在配什么东西才行. 简介 HSRP(Hot StandbyRouter Protocol 热备份路由器协议)是Cisco的专有协议.HSRP把多台路由器组成一个"热备份组",形成一个虚拟路由器.这个组内只有一个路由器是Active(活动)的,并由它来转发数据包,如果活动路由器发生了故障,备份路由器将成为活动路由器.从网络内的主机来看,网关并没有改变. HSRP的工作过程 HSRP路由器利用Hello包来互相监听各自的存在.当路由器长时间没有

思科网络实验之通过telnet访问路由器

首先,想要通过telnet访问路由器,需要先通过console口对路由器进行基本配置,比如说ip地址.密码等等 如下图,是我搭建的一个实验拓扑(需要注意的是:pc和路由器间要用交叉线连接,然后进入接口模式把端口激活,图中显示为绿色的点为正常激活端口) 小插片(先知道需要这些操作): PC端需要的配置: ip地址及子网掩码.网关 路由器需要配置: (1)配置路由器以太网接口IP地址 (2)配置路由器密码(配置进入到路由器特权模式的密码,配置 vty 的密码,即               teln

利用路由器连接别人家的网络

在网上领得一款免费的路由器(斐讯活动),甚是欢喜,虽然还没有提到现.平时,不管到哪都是蹭别人的网,路由器有什么用?

猫、路由器、交换机和PC

转载:http://duanzw102.blog.163.com/blog/static/161838173201392431722650/ 猫是 modem,是有网络供应商,比如电信公司提供的拨号工具. 路由器,一般是Dlink或者TPlink之类,是用户自己在自己家庭组建局域网,多台电脑共用一条外部网线上网的分线工具. 交换机,主要只是用来增加端口数量的, 一般路由器仅仅提供4个内网端口,令有1个外网端口用,路由器可以当交换机用 1.猫跟路由器的区别 猫全名调制解调器,在中国是ADSL用户接