贪心题目选讲

雷达安装

假定海岸线是一条无限延伸的直线,陆地在海岸线的一边,大海在另一侧。海中有许多岛屿,每一个小岛我们可以认为是一个点。现在要在海岸线上安装雷达,雷达的覆盖范围是d,也就是说大海中一个小岛能被安装的雷达覆盖,那么它们之间的距离最大为d。

我们使用平面直角坐标系,定义海岸线是x轴,大海在x轴上方,陆地在下方。给你海中每一个岛屿的坐标位置(x,y)和要安装的雷达所覆盖的范围d,你的任务是写一个程序计算出至少安装多少个雷达能将所有的岛屿覆盖。


我们考虑如何转化问题,考虑一个特定的岛屿,对于它来说能够覆盖到它的雷达的位置一定是在海岸线上的一个连续的区间。这样就将问题转化为了对于一堆区间,求出至少用几个点才能将它们全都覆盖到。

我们将区间按照右端点排序,然后记录上一个选取的雷达的位置。我们枚举区间,如果这个区间的左端点坐标大于上一个雷达的位置,那么我们就在这个区间的右端点新放一个雷达并更新答案

原文地址:https://www.cnblogs.com/nao-nao/p/13847132.html