POJ 1328 Radar Installation 贪心算法

来源:互联网 发布:树达学院教务网络系统 编辑:程序博客网 时间:2024/06/09 01:52

     题目:http://poj.org/problem?id=1328

     题目大意:在一个无线长的直线的海岸线上,海岸线上边是岛屿,在海岸线上放雷达,雷达的辐射范围是D,问至少放几个雷达可以覆盖所有的塔。

     分析:如下图所示,针对一个点,她的雷达的位置范围如下,因此我们按照x对所有的岛屿点进行排列,如果每个岛屿的圆心有重合,那么他们可以用一个雷达所覆盖,如果不能我们需要重新设置一个新的雷达,雷达的位置范围为新的点的范围。

    代码如下:

#include<stdio.h>#include <math.h>#define  ONLINE#define  max(a,b) (a)>(b)?(a):(b)#define min(a,b) (a)<(b)?(a):(b)void online(){#ifdef ONLINE#elsefreopen("1328.in","r", stdin);freopen("1328.out","w", stdout);#endif}int n, d;int cas = 1;const int SIZE = 1001;int point[SIZE][2];double range[SIZE][2];int result;int calrange(){//排序for (int i=0; i<n; i ++){for(int j=i+1; j < n; j ++){if (point[i][0] > point[j][0]){int x = point[i][0];int y = point[i][1];point[i][0] = point[j][0];point[i][1] = point[j][1];point[j][0] = x;point[j][1] = y;}//end if}//end for j}//end for ifor (int i=0; i < n; i ++){if(point[i][1] > d)return -1;double r = sqrt((double)(d * d - point[i][1] * point[i][1]));range[i][0] = point[i][0] - r;range[i][1] = point[i][0] + r;}}void calresult(){double x = range[0][0];double y = range[0][1];result = 1;for (int i = 1; i < n; i ++){if (range[i][0]<= y && range[i][1] >= x){x = max(x, range[i][0]);y = min(y, range[i][1]);}else{result ++;x = range[i][0];y = range[i][1];}//end else}//end for}void read(){while (scanf("%d%d", &n, &d)!=EOF && n != 0 && d != 0){for(int i=0; i < n; i ++)scanf("%d%d", &point[i][0], &point[i][1]);result = 0;if (calrange() == -1){printf("Case %d: %d\n", cas, -1);}else{calresult();printf("Case %d: %d\n", cas, result);}cas ++;}//end while}int main(){online();read();return 0;}
     运行结果如下:

1328Accepted200K32MSC++1663B2011-07-30 16:07:54

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 5岁小朋友数字不认识怎么办 孩子读一年级字都不识几个怎么办 宝宝二周多了不分颜色怎么办 4岁儿童手指脱皮怎么办 孩子老是不会写2怎么办 宝宝胃浅容易吐怎么办 农村户口小孩去城里读书怎么办 小孩从城市回农村读书怎么办 天冷了怎么办教案反思 小孩上幼儿园不爱学习怎么办 曰光灯管监控要反光怎么办 立邦乳胶漆墙面脏了怎么办 橱柜门黑色边颜色花了怎么办 地板上有真实漆怎么办 吸了泡泡球的气怎么办 办公室上班坐着太累怎么办 金雀盆景生虫怎么办 租的房子墙脏怎么办 租住个厕所对着卧室怎么办 农村的房子没有房产证怎么办 墙面漆颜色深了怎么办 浴室门对卧室门怎么办 卧室40多个平方太大怎么办 卧室门洞太窄了怎么办 刷漆的墙面脏了怎么办 卧室颜色刷重了怎么办 感觉房子买小了怎么办 淋浴房一边是窗怎么办 1岁宝宝让狗咬了怎么办 2岁宝宝让狗咬了怎么办 带4个小孩只买两张儿童票怎么办 墙面补漆颜色有色差怎么办 墙壁刷的乳胶漆颜色不满意怎么办 门被水泡的鼓了怎么办 定制衣柜做大了怎么办 找平的地面高了怎么办 卫生间推拉门锁坏了怎么办 阳台推拉门框安装斜了怎么办? 电子门钥匙坏了怎么办 门的保险锁坏了怎么办 小区楼宇门坏了怎么办