原题

PDF

OJ

思路

分析

因为半径d已经确定,所以对于每个点,我们可以算出它在x 轴上的覆盖位置线段LR,如图。



此问题便转为:

对于 n 个区间,每个区间内至少有1个点,求最少点数。

算法

我们可以将所有转化后的区间按左端点大小排序,然后记录上个点位置 las,对于每个点,有两种情况:

  1. las < L , 我们必须再来一个点

  2. las \(\ge\) L ,我们就可以尽量不再开点,而是使 las = \(\min\{las,R\}\) 来满足要求。

于是就可以贪心了!

代码

注意判无法达到情况。

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#define db double
using namespace std; const int MAXN = 1010;
int n,d,ans = 0,T = 0;
bool fail = 0; struct island{
int x,y;
db l,r;
bool operator < (const island &b) const{
if(l == b.l) return r < b.r;
return l < b.l;
}
}isl[MAXN]; int main (){
while(scanf("%d %d",&n,&d) == 2){
if(n == 0) break;
T++;
fail = 0;
ans = 1;
if(d < 0) fail = 1;
double las;
for(int i = 0;i < n;i++){
scanf("%d %d",&isl[i].x,&isl[i].y);
if(isl[i].y > d ) fail = 1;
db temp = (db)( d * d - isl[i].y *isl[i].y );
if(temp < 0){ fail = 1; continue;}
temp = sqrt(temp);
isl[i].l = isl[i].x - temp;
isl[i].r = isl[i].x + temp;
}
printf("Case %d: ",T);
if(fail) {
printf("-1\n");
continue;
}
sort(isl+0,isl+n);
las = isl[0].r;
for(int i = 1;i < n;i++){
if(las < isl[i].l) {
ans++;
las = isl[i].r;
}
else las = min(las,isl[i].r);
}
printf("%d\n",ans);
}
return 0;
}

问题

  1. 在判断不可行时:
if(isl[i].x > d ) fail = 1;
  1. 在统计答案时:
if(las < isl[i].l) {
ans++;
las = isl[i].r;
}
//nothing

未写

else las = min(las,isl[i].r);

这样会保留不合法情况。

题解 UVA1193 Radar Installation的更多相关文章

  1. [POJ1328]Radar Installation

    [POJ1328]Radar Installation 试题描述 Assume the coasting is an infinite straight line. Land is in one si ...

  2. poj 1328 Radar Installation【贪心区间选点】

    Radar Installation Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 20000/10000K (Java/Other) ...

  3. Radar Installation(贪心,可以转化为今年暑假不ac类型)

    Radar Installation Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 20000/10000K (Java/Other) ...

  4. POJ 1328 Radar Installation 贪心 A

    POJ 1328 Radar Installation https://vjudge.net/problem/POJ-1328 题目: Assume the coasting is an infini ...

  5. POJ - 1328 Radar Installation(贪心区间选点+小学平面几何)

    Input The input consists of several test cases. The first line of each case contains two integers n ...

  6. Radar Installation

    Radar Installation 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=86640#problem/C 题目: De ...

  7. Radar Installation(贪心)

    Radar Installation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 56826   Accepted: 12 ...

  8. 贪心 POJ 1328 Radar Installation

    题目地址:http://poj.org/problem?id=1328 /* 贪心 (转载)题意:有一条海岸线,在海岸线上方是大海,海中有一些岛屿, 这些岛的位置已知,海岸线上有雷达,雷达的覆盖半径知 ...

  9. Radar Installation 分类: POJ 2015-06-15 19:54 8人阅读 评论(0) 收藏

    Radar Installation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 60120   Accepted: 13 ...

随机推荐

  1. 手摸手带你理解Vue响应式原理

    前言 响应式原理作为 Vue 的核心,使用数据劫持实现数据驱动视图.在面试中是经常考查的知识点,也是面试加分项. 本文将会循序渐进的解析响应式原理的工作流程,主要以下面结构进行: 分析主要成员,了解它 ...

  2. Python三大器之装饰器

    Python三大器之装饰器 开放封闭原则 一个良好的项目必定是遵守了开放封闭原则的,就比如一段好的Python代码必定是遵循PEP8规范一样.那么什么是开放封闭原则?具体表现在那些点? 开放封闭原则的 ...

  3. MongoDB入门三

    MongoDB字段问题  增删查改操作 删除一列操作db.RiderReaTimePositon.update({},{$unset:{'CreateTime':''}},false,true)db. ...

  4. Asp.net Core AOP实现(采用Autofac)

    引用正确的库来实现AOP 新的.NET Core是基于.NET Standard的..所以我们在引用库的时候特别要注意相关的兼容问题. 在传统的ASP.NET中,使用过Autofac来进行AOP操作的 ...

  5. Myeclipse启动WebLogic 总是报账号密码无效<Authentication denied: Boot identity not valid

    在MyEclipse下配置了Weblogic 11后,每次启动从报错: Critical> 看了下描述,是用户名及密码什么的问题,我想起来,配置Weblogic 的域的时候将密码改成了12345 ...

  6. Markdown小白教学15分钟速成

    第一部分 基础篇 演示第二阶标题 1.1 目录与标题 代码过程 一级标题: 最高阶标题  基础篇 ===== 二级标题: 演示第二阶标题   一 ----- 注意: 这里"="和& ...

  7. 阿里云Linux CentOS8.1 64位服务器安装LNMP(Linux+Nginx+MySQL+PHP) 并发调试之php-fpm配置及其与Nginx的通信

    一.php-fpm的配置 1. php-fpm的配置,首先要关注进程数量. php-fpm的进程管理方式有三种:static.dynamic.ondemand. static方式,开启固定数量(pm. ...

  8. 让 JavaScript 与 CSS 和 Sass 对话

    JavaScript 和 CSS 已经并存超过了 20 年.但是在它们之间共享数据非常困难.当然也有大量的尝试.但是我所想到的是一些简单而直观的内容——不涉及结构更改,而是使用 CSS 自定义属性甚至 ...

  9. 【一】美化Linux终端之oh-my-zsh开源项目

    目录 1.查看系统是否装了zsh 2.安装zsh(系统没有查到zsh,则安装) 3.切换shell为zsh 4.重启Linux 5.安装oh my zsh 6.到此就安装完成 7.更换主题 8.生效主 ...

  10. Traffic Real Time Query System,题解

    题目链接 题意: 问从一条边到另一条边的必经点. 分析: 首先,问必经点,当然是要点双缩点(圆方树)啦,关键是把边映射到哪一点上,其实直接放在某联通分量的方点上就行,但是这个点并不好找,所以我们考虑一 ...