岛屿以d为半径做圆,与x轴的两个交点构成一条线段,能够扫到该岛屿的雷达一定在该线段上,将所有的线段按左端点大小从左到右排序,若前一个岛屿的右端点比后一个岛屿的左端点大,则两个岛屿能共用一个雷达,否则不能,雷达数+1,若能共用,则下一次作为判断标准的是前两个可以共用的岛屿右端点更小的岛屿位置。
该题已经在北大ACM网站提交通过
# include<stdio.h>
# include<math.h>
typedef struct
{
double left;
double right;
}island;
int main()
{
island position[1000],temp,p;
int n,d,count,order=0; // count多少个岛屿,order第几个case
int x,y,i,j,flag,min;