雷达覆盖岛屿的问题

来源:互联网 发布:一个域名绑定两个ip 编辑:程序博客网 时间:2024/04/30 05:04

acm的题

在地平线两侧,存在着岛屿,现在需要安装对岛屿进行监控,雷达的辐射半径是 r , 岛屿以坐标表示,地平线为X轴,用最少的雷达监控所有的岛屿


此题需要先建模

以岛屿为圆心,半径为r画圆,与X轴相交于两点形成一个闭区间

[a1 b1],   [a2  b2]    [a3   b3]       [an   bn];

下标为岛屿的编号, [an   bn]表示以岛屿n为圆心,半径为r的圆与x轴相交于 an  ,bn两点;

对于岛屿 n来说,只要雷达在X的[an   bn]区间中,都能辐射到岛屿n;


建模后的模型

既存在区间
[a1 b1]  ,  [a2  b2],  ..............[an   bn],选择最少的点,满足每个区间中都有一个点。

此题的解法即使典型的贪心解法了
只给出思路,不具体实现

解题思路

把区间按照a排序,a相同按b值小,优先排列

选择排序后第一个区间b的值,为选中的点,
  移除包含点b的区间,
依次下去直到没有区间可以选择

这个算法在acm入门书籍《《算法竞赛入门经典》》 有介绍