题目地址传送门:http://poj.org/problem?id=1328
题意:
给若干的岛屿坐标和雷达覆盖半径,让你在海岸线(X轴)上建立雷达站以覆盖所有岛屿,求出最少需要多少个雷达,如果不能覆盖全部就输出-1
思路:
典型的区间贪心,先考虑不能完全覆盖的情况,就是如果半径小于岛屿y轴高度(这个现实生活中倒是有可能出现),或者雷达覆盖面积小于等于0(这个显然扯犊子),还有一种就是岛的位置在海岸线的那头(y轴的负半轴,太扯了)
在输入的时候就把这几种情况排除直接输出-1.
如果情况可解:
可以换种思路考虑,把雷达建在每个岛屿上,记录每个岛屿能辐射到海岸线的区域,并将这个区域按照从左到右排序,排除掉重复区间,就得到正解。
如何排除重复区间?首先考虑当前区间和下一区间最右端谁更靠右,如果下一区间没有当前区间靠右,那就说明下一区间在当前区间内部,直接把下次判断条件更新为下一区间,但如果下一区间的左端比当前区间最右端还靠右,就说明下一区间不在当前区间之内,那就更新区间并且 答案++ .
代码: