首页 > 其他 > 详细

路由器安置(Routing)

时间:2015-02-26 09:56:22      阅读:315      评论:0      收藏:0      [点我收藏+]

描述

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


分析

首先这种问题可以采用二分答案的方法. 尝试当前路由器覆盖范围能否覆盖所有居民点. 那么这里如果采用二分半径的方法, 会出现实数, 所以采用 wxjlzbcd 的方法, 采用二分直径, 最后实数折半输出.

在尝试答案可行性的时候, 为了快速查找从当前居民点可以覆盖到的最远居民点, 再采用一次二分查找 (upper_bound) 找到刚好覆盖不到的一个点, 也就是下一个起点. 注意这里的几个变量的初值和边界值需要好好考虑一下.


代码

https://code.csdn.net/snippets/607845

路由器安置(Routing)

原文:http://blog.csdn.net/qq_21110267/article/details/43950033

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!