poj 1328 Radar Installation (贪心)@
来源:互联网 发布:网络奇兵2 汉化 编辑:程序博客网 时间:2024/05/22 11:31
Assume the coasting is an infinite straight line. Land is in one side of coasting, sea in the other. Each small island is a point locating in the sea side. And any radar installation, locating on the coasting, can only cover d distance, so an island in the sea can be covered by a radius installation, if the distance between them is at most d.
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
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
The input consists of several test cases. The first line of each case contains two integers n (1<=n<=1000) and d, where n is the number of islands in the sea and d is the distance of coverage of the radar installation. This is followed by n lines each containing two integers representing the coordinate of the position of each island. Then a blank line follows to separate the cases.
The input is terminated by a line containing pair of zeros
The input is terminated by a line containing pair of zeros
For each test case output one line consisting of the test case number followed by the minimal number of radar installations needed. "-1" installation means no solution for that case.
3 21 2-3 12 11 20 20 0
Case 1: 2Case 2: 1
题意:在x轴上方,分布一些点,求在x轴上最少放置几个雷达可以将他们全部包围,给定雷达的检测范围;
解:从左到右贪心,预处理出一个点可以被包含的区间长度,求更新一个区间的长度;
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#include <vector>using namespace std;const int N = 1e6+10;typedef long long LL;const LL mod = 1e9+7;const double eps= 1e-6;struct node{ double l, r;}p[N];int cmp(node x,node y){ if(x.l==y.l) return x.r<y.r; return x.l<y.l;}int main(){ int n, ncase=1; double d; while(scanf("%d %lf", &n, &d),n!=0||d!=0) { int flag=0; for(int i=0;i<n;i++) { double x, y; scanf("%lf %lf", &x, &y); if(y>d||y<0) flag=1; p[i].l=x-sqrt(d*d-y*y), p[i].r=x+sqrt(d*d-y*y); } sort(p,p+n,cmp); int cnt=1; double l=p[0].l, r=p[0].r; for(int i=1;i<n;i++) { if(p[i].l>r) { cnt++; l=p[i].l, r=p[i].r; } else if(p[i].r<=r) r=p[i].r; } if(flag) printf("Case %d: -1\n",ncase++); else printf("Case %d: %d\n",ncase++,cnt); } return 0;}
0 0
- Radar Installation(POJ 1328)(贪心)
- POJ 1328 - Radar Installation(贪心)
- POJ 1328 Radar Installation(贪心)
- POJ 1328 Radar Installation(贪心)
- poj 1328 Radar Installation (贪心)
- poj 1328 Radar Installation (贪心)
- poj 1328 Radar Installation(贪心)
- poj 1328 Radar Installation (贪心)
- POJ 题目1328 Radar Installation(贪心)
- POJ 1328 Radar Installation(贪心)
- poj 1328 Radar Installation (贪心)
- POJ 1328 Radar Installation(贪心)
- POJ 1328 Radar Installation(经典贪心)
- POJ 1328 Radar Installation (贪心)
- POJ 1328 Radar Installation(贪心)
- POJ 1328 Radar Installation(贪心)
- POJ 1328 Radar Installation(区间贪心)
- POJ-1328Radar Installation(贪心)
- MUI框架学习之[Ajax][下拉刷新][上拉加载]
- 计算机二级(Java)基础知识点
- 数组的相关方法
- 1091 . 线段的重叠
- EffectiveJava(25)泛型和数组的使用取舍及规范
- poj 1328 Radar Installation (贪心)@
- PTA 列车厢调度
- 漫谈android系统(8)-唠嗑说说手机制造的过程
- javascript 遍历dom 节点统计类型
- JQuery之摘选CN博客文章收藏列表
- 在js开发中,如何减少if else语句的使用
- 大型网站相关技术
- PTA 求n以内最大的k个素数以及它们的和
- 在Linux中创建静态库和动态库范例