POJ 1328

题意:

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

分析:

贪心法,先研究一下每个岛屿,设岛屿到海岸线的垂直距离为d,雷达的覆盖半径为k,若d>k,直接输出-1,若d<=k,则雷达的建造有一个活动区间[x1,x2](用平面几何可以求得出来)。因此,在可以覆盖的情况下每个岛屿都有一个相应的活动区间。该问题也就转变成了最少区间选择问题即:

在n个区间中选择一个区间集合,集合中的各个区间都不相交,集合中元素的个数就是答案了。

#include <iostream>
#include <algorithm>
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
using namespace std;struct point
{double left, right;
}p[2010], temp;bool operator < (point a, point b)
{return a.left < b.left;
}int main()
{int n;double r;int kase = 0;while(true){scanf("%d%lf",&n,&r);if(n==0&&r==0)break;bool flag = false;for (int i = 0; i < n; i++){double a, b;scanf("%lf%lf",&a,&b);if (fabs(b) > r){flag = true;}else{p[i].left = a * 1.0 - sqrt(r * r - b * b);p[i].right = a * 1.0 + sqrt(r * r - b * b);}}cout << "Case " << ++kase << ": ";if (flag){cout << -1 << endl;}else{int count = 1;sort(p, p + n);temp = p[0];for (int i = 1; i < n; i++){if (p[i].left > temp.right)//不重叠{count++;temp = p[i];}else if (p[i].right < temp.right)//重叠取里面的端点{temp = p[i];}}cout << count << endl;}}return 0;
}

转载于:https://www.cnblogs.com/demian/p/6557032.html

POJ 1328 Radar Installation【贪心】相关推荐

  1. POJ - 1328 Radar Installation(贪心+思维)

    题目链接:点击查看 题目大意:校长想通过监控设备覆盖学校内的N座建筑物,每座建筑物被视作一个质点,在笛卡尔坐标系中给出他们的坐标(x,y),并且所有建筑物均处在x轴的上方.因为学校的供电和传输线路均沿 ...

  2. poj 1328 Radar Installation

    题目链接:http://poj.org/problem?id=1328 题意: 设x轴为海岸,下方为陆地,上方为海.海上有n个岛屿,现在需要用雷达将所有的岛屿覆盖起来.给定岛屿个数及每个岛屿的坐标,给 ...

  3. POJ-1328 Radar Installation 贪心

    以每个点算出左右覆盖的雷达所在x轴范围,然后贪心计算出所需圆的个数. 当后一个点的圆心在x轴的左坐标在前一个点的右坐标的右坐标之前,则这个点就会被覆盖. 代码如下:(C++能过,G++ runtime ...

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

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

  5. 【POJ - 1328】Radar Installation(贪心+计算几何)安装雷达辐射岛屿

    题干: Assume the coasting is an infinite straight line. Land is in one side of coasting, sea in the ot ...

  6. POJ Radar Installation 1328(雷达)贪心算法

    问题描述 问题链接 Description Assume the coasting is an infinite straight line. Land is in one side of coast ...

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

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

  8. Radar Installation(贪心,sort)

    在poj上C++可以AC,但G++不行.杭电上更是好多的TLE,结果把cin改成scanf便可以轻松AC. #include <iostream> #include <algorit ...

  9. 【POJ1328】Radar Installation(贪心,决策包容)

    problem 平面直角坐标系上有n个点. 在x轴上找尽量少的点,并以这些点为圆心画一个半径为d的圆,使得给定的点都在画出来的圆里. 求最少要画的点数,如果不能输出-1. solution 一.不能的 ...

最新文章

  1. java 8 lambda reduce_JDK8新特性Lambda表达式体验
  2. react创建组件_如何使用React创建时间轴组件
  3. python pip install如何解决安装包read time out报错
  4. Heartbeat双机热备配置
  5. Libgdx学习笔记:UI之评分组件
  6. 文巾解题 1046. 最后一块石头的重量
  7. 【运营】运营高手的“葵花宝典”,你就是下一个东方不败
  8. Linux 安装 redis
  9. microdot - 一个开源 .NET 微服务框架。
  10. PAT乙级 1023 组个最小数 (20 分)
  11. 韩国f4计算机考试在哪报名,2020年F4签证资格考试报名方式及考试日程,错过还要再等3个月!...
  12. c malloc 头文件_c++个人学习笔记——1.头文件声明
  13. L3-004. 肿瘤诊断-PAT团体程序设计天梯赛GPLT(广度优先搜索)
  14. Atitit.dart语言的特性  编译时js语言大总结
  15. 2018年10月中华人民共和国县以上行政区划代码(身份证地区码/身份证前缀)
  16. “拖延症”的良方-对于追求完美,自制力差,情绪化的人很受用
  17. Photoshop插件-证件照-3寸裁剪-3寸排版-脚本开发-PS插件
  18. 分析保镖人才网网站优化与搜索引擎相关建议
  19. 12位串行AD转换器TLC2543与单片机的接口设计与编程
  20. SOPC教学笔记01——绪论

热门文章

  1. SVM中引入拉格朗日对偶理解
  2. 数字图像处理--引入齐次坐标
  3. 鱼眼图像畸变校正--透视变换
  4. 【实践驱动开发3-005】TI WL1835MODCOM8 在android的移植 - SDIO and wifi 基础
  5. 虚拟机python环境搭载_windows之自动化在虚拟机部署操作系统并自带python环境
  6. python从tushare获取数据_python调用tushare获取股票月线数据
  7. set column oracle,Oracle 用一个表字段更新另一个表字段三种方法
  8. 的优缺点_折叠门的优缺点
  9. 宝塔可以修改服务器内存限制吗,宝塔内存使用率很高的解决方法 cpu过高这样做!...
  10. android5.1 投影显示器,5.1.1投影—投影与中心投影(一).ppt