Radar Installation 贪心
Default
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 42461 | Accepted: 9409 |
Description
We use Cartesian coordinate system, defining the coasting is the x-axis. The sea side is above x-axis, and the land side below. Given the position of each island in the sea, and given the distance of the coverage of the radar installation, your task is to write a program to find the minimal number of radar installations to cover all the islands. Note that the position of an island is represented by its x-y coordinates.
Figure A Sample Input of Radar Installations
Input
The input is terminated by a line containing pair of zeros
Output
Sample Input
3 2
1 2
-3 1
2 1 1 2
0 2 0 0
Sample Output
Case 1: 2
Case 2: 1
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<iostream>
#include<stack>
#include<math.h>
using namespace std; struct node
{
double start;
double end;
}coor[];//记录每个区间的端点
int cmp(const struct node a,const struct node b)
{
return a.start < b.start;
}
int t,r;
stack <node> st;//用栈存每个区间, int cal(int ans)
{
while(!st.empty())
st.pop();
for(int i = t-; i >= ; i--)
st.push(coor[i]);
while(st.size() >= )//当栈中至少存在两个区间时
{
struct node tmp1 = st.top();
st.pop();
struct node tmp2 = st.top();
if(tmp1.end >= tmp2.start)//当取出的两个区间有公共部分时
{
st.pop();//tmp2出栈
struct node tmp;
tmp.start = max(tmp1.start, tmp2.start);//注意取公共部分时,起始点取较大者
tmp.end = min(tmp1.end, tmp2.end);//终点取较小者
st.push(tmp);//将公共部分入栈
ans--;//每两个区间交一次,雷达个数减一次
}
}
return ans;
}
int main()
{ int cor_x[],cor_y[];
double add;
int cnt = ;
while(~scanf("%d %d",&t,&r))
{
int ok = ;//判断小岛的坐标是否合法,
if(t == && r == ) break;
for(int i = ; i < t; i++)
{
scanf("%d %d",&cor_x[i],&cor_y[i]);
if(cor_y[i] > r)//若小岛纵坐标大于半径则不合法
ok = ;
}
if(ok == )
{
printf("Case %d: -1\n", cnt++);
continue;
}
for(int i = ; i < t; i++)
{
//以每个小岛为圆心,r为半径画圆,coor[]存该圆与x轴相交的区间
add = sqrt(r*r-cor_y[i]*cor_y[i]);
coor[i].start = cor_x[i] - add;
coor[i].end = cor_x[i] + add;
}
sort(coor,coor+t,cmp);//对这些区间按起始点从小到大排序
int ans = t;
ans = cal(ans);
printf("Case %d: %d\n",cnt++,ans);
}
return ;
}
Radar Installation 贪心的更多相关文章
- POJ 1328 Radar Installation 贪心 A
POJ 1328 Radar Installation https://vjudge.net/problem/POJ-1328 题目: Assume the coasting is an infini ...
- Radar Installation(贪心)
Radar Installation Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 56826 Accepted: 12 ...
- Radar Installation(贪心,可以转化为今年暑假不ac类型)
Radar Installation Time Limit : 2000/1000ms (Java/Other) Memory Limit : 20000/10000K (Java/Other) ...
- 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(贪心区间选点+小学平面几何)
Input The input consists of several test cases. The first line of each case contains two integers n ...
- POJ 1328 Radar Installation 贪心算法
Description Assume the coasting is an infinite straight line. Land is in one side of coasting, sea i ...
- POJ1328 Radar Installation(贪心)
题目链接. 题意: 给定一坐标系,要求将所有 x轴 上面的所有点,用圆心在 x轴, 半径为 d 的圆盖住.求最少使用圆的数量. 分析: 贪心. 首先把所有点 x 坐标排序, 对于每一个点,求出能够满足 ...
- poj1328 Radar Installation —— 贪心
题目链接:http://poj.org/problem?id=1328 题解:区间选点类的题目,求用最少的点以使得每个范围都有点存在.以每个点为圆心,r0为半径,作圆.在x轴上的弦即为雷达可放置的范围 ...
- POJ 1328 Radar Installation 贪心题解
本题是贪心法题解.只是须要自己观察出规律.这就不easy了,非常easy出错. 一般网上做法是找区间的方法. 这里给出一个独特的方法: 1 依照x轴大小排序 2 从最左边的点循环.首先找到最小x轴的圆 ...
随机推荐
- 关于 Head First SQL 中文版
我想谈谈 我对于Head First SQL 中文版的一些看法 事实上关于我翻译的这个Head First SQL 中文版..我自觉得:的确翻译得非常烂.. 和翻译Head First ...
- 深入懂得android view 生命周期
作为自定义 view 的基础,如果不了解android view 的生命周期 , 那么你将会在后期的维护中发现这样那样的问题 ....... 做过一段时间android 开发的同学都知道,一般 on ...
- POJ 1265 Area POJ 2954 Triangle Pick定理
Area Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5227 Accepted: 2342 Description ...
- android中获取时间
android中获取时间 1)通过calendar类获取 Calendar calendar = Calendar.getInstance();int moth = calendar.get(Cale ...
- js的new操作符
1.创建一个空对象,并且 this 变量引用该对象,同时还继承了该函数的原型. 2.属性和方法被加入到 this 引用的对象中. 3.新创建的对象由 this 所引用,并且最后隐式的返回 this . ...
- canvas --> getImageData()
getImageData() 使用时有跨域问题 设置img的属性 crossOrigin="anonymous"可解决crossOrigin的问题 <img src=&quo ...
- 得于吾师傅的js知识 js类,单写模板,和私有保护的方法
js的类的写法: 1,写法一:function内部包含this.function()如代码: var origin_class = function(name) { var lover = ''; t ...
- Js数学函数1
1.取模求余数 //1.JS取模求余 //输出 for (var i = 0; i < 20; i++) { if (i % 3 == 0) { documentHelper.WriteText ...
- ManagementException:WMI异常处理介绍
.NET调用WMI后无论是同步调用还是异步调用,都会产生返回一个int类型的执行结果.如果成功,则返回0.如果不是0,则有对应错误码表示发生了什么错误. 根据咱们这个系列的博文,我总结了关于进程,服务 ...
- Oracle解析 xml 记录一下(未完待续)
Oracle解析 xml 记录一下. SQL> desc xmlparser; PROCEDURE FREEPARSER Argument Name Type ...