poj 1328 Radar Installation 【贪心】【区间选点问题】
| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 54798 | Accepted: 12352 |
Description
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
Input
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
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
题意:就是找最少的站,来覆盖所有的点。
思路:我们能够以点来做半径为d的圆,与x轴的相交,假设不相交那么肯定完不成任务,反之就转化成了区间选点问题。
代码:
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h>
using namespace std;
#define M 1005 struct node {
double st, en;
}s[M]; int cmp(node a, node b){
if(a.en == b.en) return a.st > b.st;
return a.en<b.en;
} int main(){
int n, v = 1; double d;
while(scanf("%d%lf", &n, &d), n||d){
int i, j;
double a, b;
int flag = 0;
for(i = 0; i < n; i ++){
scanf("%lf%lf", &a, &b);
if(b>d) flag = 1;
if(flag == 0){
s[i].en = a+sqrt(d*d-b*b);
s[i].st = a-sqrt(d*d-b*b);
//printf("%lf %lf %d..\n", s[i].st, s[i].en, i);
}
// scanf("%lf%lf", &s[i].st, &s[i].en);
}
printf("Case %d: ", v++);
if(flag){
printf("-1\n"); continue;
}
sort(s, s+n, cmp);
int ans = 1;
double maxr = s[0].en;
i = 1, j = 0;
while(i < n){
if(s[i].st <= s[j].en){
//if(maxr < s[i].en) maxr = s[i].en;
++i;
}
else {
//if(j == i-1)
j = i;
++ans;
// maxr = s[i].en;
}
}
printf("%d\n", ans);
}
return 0;
}
poj 1328 Radar Installation 【贪心】【区间选点问题】的更多相关文章
- 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 贪心 A
POJ 1328 Radar Installation https://vjudge.net/problem/POJ-1328 题目: Assume the coasting is an infini ...
- 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 贪心算法
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 题意:建立一个平面坐标,x轴上方是海洋,x轴下方是陆地.在海上有n个小岛,每个小岛看做一个点.然后在x轴上有雷达,雷达能覆盖的范 ...
- POJ 1328 Radar Installation 贪心 难度:1
http://poj.org/problem?id=1328 思路: 1.肯定y大于d的情况下答案为-1,其他时候必定有非负整数解 2.x,y同时考虑是较为麻烦的,想办法消掉y,用d^2-y^2获得圆 ...
- POJ 1328 Radar Installation 贪心题解
本题是贪心法题解.只是须要自己观察出规律.这就不easy了,非常easy出错. 一般网上做法是找区间的方法. 这里给出一个独特的方法: 1 依照x轴大小排序 2 从最左边的点循环.首先找到最小x轴的圆 ...
- POJ 1328 Radar Installation#贪心(坐标几何题)
(- ̄▽ ̄)-* #include<iostream> #include<cstdio> #include<algorithm> #include<cmath ...
- 贪心 POJ 1328 Radar Installation
题目地址:http://poj.org/problem?id=1328 /* 贪心 (转载)题意:有一条海岸线,在海岸线上方是大海,海中有一些岛屿, 这些岛的位置已知,海岸线上有雷达,雷达的覆盖半径知 ...
- POJ 1328 Radar Installation 【贪心 区间选点】
解题思路:给出n个岛屿,n个岛屿的坐标分别为(a1,b1),(a2,b2)-----(an,bn),雷达的覆盖半径为r 求所有的岛屿都被覆盖所需要的最少的雷达数目. 首先将岛屿坐标进行处理,因为雷达的 ...
随机推荐
- Eclipse的Web项目完成后怎么发布到Tomcat
打开eclipse,在“Server Locations”处,可以看到默认的是“Use Workspace metadata”. 而我们选择“Use Tomcat installation”,使用to ...
- HDU 5884 Sort(二分答案+计算WPL的技巧)
Sort Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- [BZOJ2456] mode(一道很有意思的题)
传送门 看到这个题的第一反应是离散化+线段树乱搞.. eeeeeeeeeeee感觉数据结构学傻了,其实直接存下来,sort一遍,n/2的位置的就是答案 当然前提是空间够的话 1m的空间连数组都开不下 ...
- 无序字母对 character
无序字母对 character 题目描述 给定n个各不相同的无序字母对(区分大小写,无序即字母对中的两个字母可以位置颠倒).请构造一个有n+1个字母的字符串使得每个字母对都在这个字符串中出现. 输入 ...
- 【06】Vue 之 组件化开发
组件其实就是一个拥有样式.动画.js逻辑.HTML结构的综合块.前端组件化确实让大的前端团队更高效的开发前端项目.而作为前端比较流行的框架之一,Vue的组件和也做的非常彻底,而且有自己的特色.尤其是她 ...
- 利用Docker搭建本地https环境的完整步骤
利用Docker搭建本地https环境的完整步骤 这篇文章主要给大家介绍了关于如何利用Docker搭建本地https环境的完整步骤,文中通过示例代码将实现的步骤介绍的非常详细,对大家的学习或者工作具有 ...
- Jquery : 上下滚动--单行 批量多行 文字图片翻屏【转】
原文发布时间为:2010-02-01 -- 来源于本人的百度文章 [由搬家工具导入] 注:如果和左右滚动一起使用,则会出现冲突 一单行滚动(ad:http://www.gz138.com) <! ...
- time stamp in javascript
JavaScript 获取当前时间戳: 第一种方法: var timestamp = Date.parse(new Date()); 结果:1280977330000 第二种方法: var times ...
- config .net webapi to return json.
1.add content negotiator using System; using System.Collections.Generic; using System.Linq; using Sy ...
- 自定义JS类,并扩展其方法和属性
function CT() { } CT.prototype.P = "TTT"; CT.Test = function () { alert(arguments[0]); }; ...