题意:

给雷达的半径与每个岛屿的坐标,问最少需要几个雷达才能够完全覆盖所有的岛屿。

解题思路:

可以明确的是,对于每一个岛屿,都会对应两个点,这两点的距离等于雷达半径。所以我一开始的时候,把所有的点记录下来,然后按照横坐标排序,接着依次遍历,对于每个点求出这两个点的区间,然后与后面一个点的区间进行比较,如果有交集,就把区间更新为两个点的交集;如果没有交集,则所需雷达个数++,然后把两个点的区间替换掉。

然后就是被狂wa......后来意识到,就算每个点按照横坐标排序了,但是还是有可能出现现有的区间与当前这个点的区间没有交集,但是与后面的点有交集的情况,于是排序内容出错,应该改成求出每个点的区间,然后对于区间再进行排序,然后再遍历枚举,更新区间。

本题输出-1的情况:

①岛屿的纵坐标大于雷达半径

②雷达半径为负数、

下面是代码.

#include <cstdio>
#include <algorithm>
#include <cmath>using namespace std;struct point{double a;double b;
}p[1010];int d;
bool cmp(point a,point b)
{if(a.b != b.b) return a.b<b.b;return a.a > b.a;
}int work(int a,int b,int i)
{if((d*d-b*b) < 0)return 0;double xp2 = sqrt((d*d-b*b)*1.0)+a;    //循环求区间double xp1 = (-1)*sqrt((d*d-b*b)*1.0)+a;p[i].a = xp1;p[i].b = xp2;return 1;
}int main()
{int t = 0;int temp = 1;int num;int n;while(~scanf("%d %d",&n,&d) && n!=0 && d!=0){//printf("d:%d\n",d);temp = 1;t++;num = 0;if(d < 0){temp = 0;}for(int i = 0;i < n;i++){int a,b,f;scanf("%d %d",&a,&b);f = work(a,b,i);if(!f){temp = 0;}    }sort(p,p+n,cmp);double a,b;a = p[0].a;b = p[0].b;num = 1;for(int i = 1;i < n && temp == 1;i++){if(b >= p[i].a && p[i].b >= a){b = min(b,p[i].b);a = max(a,p[i].a);   } else{num++;b = p[i].b;a = p[i].a;}}if(temp == 0){printf("Case %d: -1\n",t);}elseprintf("Case %d: %d\n",t,num); }return 0;
} 

POJ 1328 —— 贪心专题【区间贪心问题】相关推荐

  1. POJ 1328 Radar Installation【贪心】

    POJ 1328 题意: 将一条海岸线看成X轴,X轴上面是大海,海上有若干岛屿,给出雷达的覆盖半径和岛屿的位置,要求在海岸线上建雷达,在雷达能够覆盖全部岛屿情况下,求雷达的最少使用量. 分析: 贪心法 ...

  2. 【贪心专题】—— 贪心算法入门篇

    贪心算法入门 一.什么是贪心算法 "贪心算法(greedy algorithm,又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,算法得到 ...

  3. 贪心算法—建立雷达(POJ 1328)

    贪心算法--区间选点问题 这也是贪心算法的经典问题,一般情况为:有n个闭区间[ai,bj],取尽量少的点,使得每个区间内都至少有一个点. 分析 如果区间i内已经有一个点被取到,则称此区间已经被满足. ...

  4. 贪心算法—区间调度 电影节(POJ 4151)

    贪心算法--区间选取问题 或是区间调度问题 本文解决一个很经典的贪心算法问题 Interval Scheduling(区间调度问题).给你很多形如[start,end]的闭区间,请你设计一个算法,算出 ...

  5. 【贪心】Radar Installation(poj 1328)

    Radar Installation poj 1328 题目大意: 在平面直角坐标系的一二象限上有n个小岛,现在让你在x坐标上布置雷达,每个雷达可以侦测以它为原心,半径为m的圆内的所有小岛,现在问侦测 ...

  6. NYOJ-14 会场安排问题(经典贪心,区间完全不覆盖模板)

    附另一:此类问题选题总结:https://blog.csdn.net/qq_41289920/article/details/81001357 题干: 会场安排问题 时间限制:3000 ms | 内存 ...

  7. poj3190 区间贪心 挑战程序设计竞赛

    2018-2-1 主要就是使用贪心,每次尽量多的安排多的奶牛,然后与之前的区间贪心不同的是,这里是需要多次的直到所有的奶牛都安排完毕. 但是不知道为什么一直TLE,暂时还没有AC,只是把代码贴在这里, ...

  8. 贪心法——区间选点问题

    贪心法--区间选点问题 区间选点问题.数轴上有nn个闭区间[ai,bi][a_i, b_i].取尽量少的点,使得每个区间内都至少有一个点(不同区间内含的点可以是同一个). 贪心思想:先按bb从小到大进 ...

  9. 贪心法——区间覆盖问题

    贪心法--区间覆盖问题 区间覆盖问题.数轴上有n个闭区间[ai,bi][a_i, b_i],选择尽量少的区间覆盖一条指定线段[s,t][s,t]. 先进行预处理,将不包含[s,t][s,t]的区间都去 ...

  10. 单方面论述题-区间贪心快递柜详解+代码——zzx的博客

    题目描述 合肥市某区有一条路叫科丁路,科丁路是一条长度为L的笔直的路(可以比拟为x轴),路的两边有分布了N个小区,现在要在这条路上建一些快递柜方便居民收发快递,为了使得收发快递方便,快递公司规定每个小 ...

最新文章

  1. python文件关键行数_Python计算大文件行数方法及性能比较
  2. unity编辑器扩展_01(在工具栏中创建一个按钮)
  3. 第三代测序技术的方法原理及其在生物领域的应用
  4. Android多线程分析之一:使用Thread异步下载图像
  5. 安全设置IIS的15个方法
  6. 【统计学习方法】感知机笔记
  7. Web Form要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping。”的解决办法。...
  8. 第二代飞信机器人“小达”问世了
  9. android layout 替换,LayoutInflater 后记--替换系统控件
  10. python hackrf_HackRF固件更新及编译环境搭建
  11. RabbitMq学习笔记004---在CentOS7上安装RabbitMQ
  12. linxuwindows下JBOSS服务端口号及默认根应用修改
  13. python是什么意思-Python中%是什么意思?python中百分号如何使用?
  14. linux如何查看tomcat端口号,如何在Linux中修改tomcat端口号
  15. jacoco+maven 初次使用覆盖率工具
  16. 计算机打字键盘亮怎么设置,win7系统键盘灯亮着但是不能打字的解决方法?
  17. 伟大的数学思想家—黎曼
  18. 某app登录协议逆向分析
  19. ATmega128 串口使用注意事项
  20. web网页设计实例作业 ——我的家乡-四川(9页) HTML+CSS+JavaScript 学生DW网页设计作业成品

热门文章

  1. 修改oracle数据库的编码为utf-8
  2. SSH 登录太慢的解决方法
  3. Linux GCC make文件的写法4--清晰版
  4. linux培训课程第一天:ppt以及笔记
  5. PHP修改防火墙ip,利用防火墙进行同网段下的ip地址欺骗
  6. KMP算法 next数组 nextval数组
  7. OpenCV-图像处理(20、霍夫变换-直线)
  8. golang python对比_对比 Python 和 Go 语言的每秒请求数
  9. is this mysql server_mysql出现is not allowed to connect to this mysql server异常的解决办法
  10. 【CF-gym101964:B】Broken Watch(找规律+推导+自然溢出/java大数)