POJ 1328 Radar Installation【贪心】
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【贪心】相关推荐
- POJ - 1328 Radar Installation(贪心+思维)
题目链接:点击查看 题目大意:校长想通过监控设备覆盖学校内的N座建筑物,每座建筑物被视作一个质点,在笛卡尔坐标系中给出他们的坐标(x,y),并且所有建筑物均处在x轴的上方.因为学校的供电和传输线路均沿 ...
- poj 1328 Radar Installation
题目链接:http://poj.org/problem?id=1328 题意: 设x轴为海岸,下方为陆地,上方为海.海上有n个岛屿,现在需要用雷达将所有的岛屿覆盖起来.给定岛屿个数及每个岛屿的坐标,给 ...
- POJ-1328 Radar Installation 贪心
以每个点算出左右覆盖的雷达所在x轴范围,然后贪心计算出所需圆的个数. 当后一个点的圆心在x轴的左坐标在前一个点的右坐标的右坐标之前,则这个点就会被覆盖. 代码如下:(C++能过,G++ runtime ...
- 【贪心】Radar Installation(poj 1328)
Radar Installation poj 1328 题目大意: 在平面直角坐标系的一二象限上有n个小岛,现在让你在x坐标上布置雷达,每个雷达可以侦测以它为原心,半径为m的圆内的所有小岛,现在问侦测 ...
- 【POJ - 1328】Radar Installation(贪心+计算几何)安装雷达辐射岛屿
题干: Assume the coasting is an infinite straight line. Land is in one side of coasting, sea in the ot ...
- POJ Radar Installation 1328(雷达)贪心算法
问题描述 问题链接 Description Assume the coasting is an infinite straight line. Land is in one side of coast ...
- 贪心算法—建立雷达(POJ 1328)
贪心算法--区间选点问题 这也是贪心算法的经典问题,一般情况为:有n个闭区间[ai,bj],取尽量少的点,使得每个区间内都至少有一个点. 分析 如果区间i内已经有一个点被取到,则称此区间已经被满足. ...
- Radar Installation(贪心,sort)
在poj上C++可以AC,但G++不行.杭电上更是好多的TLE,结果把cin改成scanf便可以轻松AC. #include <iostream> #include <algorit ...
- 【POJ1328】Radar Installation(贪心,决策包容)
problem 平面直角坐标系上有n个点. 在x轴上找尽量少的点,并以这些点为圆心画一个半径为d的圆,使得给定的点都在画出来的圆里. 求最少要画的点数,如果不能输出-1. solution 一.不能的 ...
最新文章
- java 8 lambda reduce_JDK8新特性Lambda表达式体验
- react创建组件_如何使用React创建时间轴组件
- python pip install如何解决安装包read time out报错
- Heartbeat双机热备配置
- Libgdx学习笔记:UI之评分组件
- 文巾解题 1046. 最后一块石头的重量
- 【运营】运营高手的“葵花宝典”,你就是下一个东方不败
- Linux 安装 redis
- microdot - 一个开源 .NET 微服务框架。
- PAT乙级 1023 组个最小数 (20 分)
- 韩国f4计算机考试在哪报名,2020年F4签证资格考试报名方式及考试日程,错过还要再等3个月!...
- c malloc 头文件_c++个人学习笔记——1.头文件声明
- L3-004. 肿瘤诊断-PAT团体程序设计天梯赛GPLT(广度优先搜索)
- Atitit.dart语言的特性 编译时js语言大总结
- 2018年10月中华人民共和国县以上行政区划代码(身份证地区码/身份证前缀)
- “拖延症”的良方-对于追求完美,自制力差,情绪化的人很受用
- Photoshop插件-证件照-3寸裁剪-3寸排版-脚本开发-PS插件
- 分析保镖人才网网站优化与搜索引擎相关建议
- 12位串行AD转换器TLC2543与单片机的接口设计与编程
- SOPC教学笔记01——绪论
热门文章
- SVM中引入拉格朗日对偶理解
- 数字图像处理--引入齐次坐标
- 鱼眼图像畸变校正--透视变换
- 【实践驱动开发3-005】TI WL1835MODCOM8 在android的移植 - SDIO and wifi 基础
- 虚拟机python环境搭载_windows之自动化在虚拟机部署操作系统并自带python环境
- python从tushare获取数据_python调用tushare获取股票月线数据
- set column oracle,Oracle 用一个表字段更新另一个表字段三种方法
- 的优缺点_折叠门的优缺点
- 宝塔可以修改服务器内存限制吗,宝塔内存使用率很高的解决方法 cpu过高这样做!...
- android5.1 投影显示器,5.1.1投影—投影与中心投影(一).ppt