[ACM_贪心] Radar Installation
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=28415#problem/A

题目大意:X轴为海岸线可放雷达监测目标点,告诉n个目标点和雷达监测半径,求最少多少个雷达可全覆盖,如果不能输出-1;
解题思路:赤裸裸的区间选点问题(数轴上有n个闭区间,去尽量少的点,使每个区间至少有一个点)。核心思想就是贪心算法:把所有区间按照b从小到大的顺序(b相同时按a从大到小的顺序),贪心策略:第一区间取最后一个点,然后跳过接下来包含该点的区间,直到遇到不包含该点的区间最为选择第二点的区间,以此类推,直至最后一个区间。
//****************************************************************
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
struct QJ{ //定义一个区间类并重写排序函数
double l,r;
int flag;
};
bool operator<(const QJ& a,const QJ& b){
return (a.r==b.r ? a.l>b.l : a.r<b.r);
}
//****************************************************************
int main(){
double x,y;int n,kase=;
for(double d;cin>>n>>d;kase++){ if(n==&&d==)return ;
QJ qj[];
int ok=; //标记是否有超出雷达监测范围的目标 for(int i=;i<n;i++){ //输入目标点,并转化为X轴上的区间
cin>>x>>y;
if(fabs(y)>d)ok=;
else if(ok){
double ban=sqrt(d*d-y*y);
qj[i].l=x-ban;
qj[i].r=x+ban;
qj[i].flag=;
}
} if(ok==)cout<<"Case "<<kase<<": "<<"-1\n";
else{ //如果都在监测范围内,则贪心求解
sort(qj,qj+n);
int sum=;
double point=qj[].r;
for(int j=;j<n;j++){
if(qj[j].l>point){
point=qj[j].r;
sum++;
}
}
cout<<"Case "<<kase<<": "<<sum<<'\n';
}
}
return ;
}
//****************************************************************
[ACM_贪心] Radar Installation的更多相关文章
- 贪心 Radar Installation (求最少探测雷达)
Description Assume the coasting is an infinite straight line. Land is in one side of coasting, sea i ...
- 贪心 POJ 1328 Radar Installation
题目地址:http://poj.org/problem?id=1328 /* 贪心 (转载)题意:有一条海岸线,在海岸线上方是大海,海中有一些岛屿, 这些岛的位置已知,海岸线上有雷达,雷达的覆盖半径知 ...
- poj 1328 Radar Installation(贪心)
Description Assume the coasting is an infinite straight line. Land is in one side of coasting, sea i ...
- poj 1328 Radar Installation (简单的贪心)
Radar Installation Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 42925 Accepted: 94 ...
- POJ--1328 Radar Installation(贪心 排序)
题目:Radar Installation 对于x轴上方的每个建筑 可以计算出x轴上一段区间可以包含这个点 所以就转化成 有多少个区间可以涵盖这所有的点 排序之后贪心一下就ok 用cin 好像一直t看 ...
- POJ 1328 Radar Installation 贪心 A
POJ 1328 Radar Installation https://vjudge.net/problem/POJ-1328 题目: Assume the coasting is an infini ...
- 【贪心】「poj1328」Radar Installation
建模:二维转一维:贪心 Description Assume the coasting is an infinite straight line. Land is in one side of coa ...
- POJ 1328 Radar Installation 【贪心 区间选点】
解题思路:给出n个岛屿,n个岛屿的坐标分别为(a1,b1),(a2,b2)-----(an,bn),雷达的覆盖半径为r 求所有的岛屿都被覆盖所需要的最少的雷达数目. 首先将岛屿坐标进行处理,因为雷达的 ...
- Radar Installation(贪心)
Radar Installation Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 56826 Accepted: 12 ...
随机推荐
- SEO是企业发展的永恒主题
最近接触很多客户问同一个问题,明明自己的网站花的时间很多,界面设计的很美,该考虑到的优化都考虑了,反而我那么优秀的网站却不如一个自己行业里的一个垃圾网站排名高,我没排名而对方的排名却很高?我每天坚持更 ...
- 搭建maven环境
有两种方式可以配置maven的环境配置,本人推荐使用第二种,即使用本地的maven安装文件,个人感觉这样可以方便管理下载jar包的存放位置,错误信息的输出等,可以在dos窗口中可以清晰看到,虽然比较麻 ...
- c++ 课堂作业(1)
一.题目 Create a program that asks for the radius of a circle and prints the area of that circle, using ...
- CAD二次开发 - 可缩放块(四)
1.说明 可进行缩放性注释的对象有:文字.标注.图案填充.公差.多重引线.块及属性. 2.为图形添加.删除注释比例步骤 1)使用AnnotationScale类(在DatabaseServices命名 ...
- hdu 5795
A Simple Nim Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- Head First 设计模式读书笔记
在网上学习了一段时间设计模式,总感觉不系统,很容易忘,最近买书,学习了<Head First设计模式>,受益匪浅,特做此记录,以便激励自己不断的向后学习. 原书JAVA版本,本次学习记录及 ...
- http协议性能相关的技术要点
1.http协议介绍 HTTP是一种请求/响应式的协议,基于TCP协议来进行数据传输. HTTPS是HTTP协议和安全套借口层(SSL)的结合,即安全增强版的HTTP. HTTP请求由三部分组成:请求 ...
- PPT开发 * .pps 文件类型
PPT开发, * .pps ,文件类型 PPS 这个格式也是PowerPoint文件格式的一种. pps的意思是说PowerPoint Show,POWER POINT会直接生成预览形式为你放映幻灯片 ...
- sqlserver的IO性能检查
这一个月老被一个信息科科长纠缠,原因就是他们的sql server 2008 R2老是定期的写入性能低下.我是这样认为的,但身边的人似乎都不这么想.每每我对那个挂在一个交换机上的网络存储表达担忧时,这 ...
- CSS盒模型
CSS盒模型是CSS 可视化格式化系统的基石,它是理解样式表如何工作的核心概念.盒模型用于元素定位和页面布局.元素框的最内部分是实际的内容,直接包围内容的是内边距.内边距呈现了元素的背景.内边距的边缘 ...