题解 UVA1193 Radar Installation
原题
思路
分析
因为半径d
已经确定,所以对于每个点,我们可以算出它在x
轴上的覆盖位置线段LR
,如图。
此问题便转为:
对于 n
个区间,每个区间内至少有1
个点,求最少点数。
算法
我们可以将所有转化后的区间按左端点大小排序,然后记录上个点位置 las
,对于每个点,有两种情况:
las < L , 我们必须再来一个点
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;
}
问题
- 在判断不可行时:
if(isl[i].x > d ) fail = 1;
- 在统计答案时:
if(las < isl[i].l) {
ans++;
las = isl[i].r;
}
//nothing
未写
else las = min(las,isl[i].r);
这样会保留不合法情况。
题解 UVA1193 Radar Installation的更多相关文章
- [POJ1328]Radar Installation
[POJ1328]Radar Installation 试题描述 Assume the coasting is an infinite straight line. Land is in one si ...
- poj 1328 Radar Installation【贪心区间选点】
Radar Installation Time Limit : 2000/1000ms (Java/Other) Memory Limit : 20000/10000K (Java/Other) ...
- Radar Installation(贪心,可以转化为今年暑假不ac类型)
Radar Installation Time Limit : 2000/1000ms (Java/Other) Memory Limit : 20000/10000K (Java/Other) ...
- 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(贪心区间选点+小学平面几何)
Input The input consists of several test cases. The first line of each case contains two integers n ...
- Radar Installation
Radar Installation 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=86640#problem/C 题目: De ...
- Radar Installation(贪心)
Radar Installation Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 56826 Accepted: 12 ...
- 贪心 POJ 1328 Radar Installation
题目地址:http://poj.org/problem?id=1328 /* 贪心 (转载)题意:有一条海岸线,在海岸线上方是大海,海中有一些岛屿, 这些岛的位置已知,海岸线上有雷达,雷达的覆盖半径知 ...
- Radar Installation 分类: POJ 2015-06-15 19:54 8人阅读 评论(0) 收藏
Radar Installation Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 60120 Accepted: 13 ...
随机推荐
- SpringCloud 入门(一)
本人也是刚接触springcloud,现在先将创建项目的过程记录下来,springcloud的理解日后再慢慢补齐,最好还是自己参考官方文档的介绍 使用工具:IDEA IDEA创建springcloud ...
- js的原型和原型链
总结: 1.每一个函数都有一个prototype属性,默认指向object空对象(原型对象), 每一个原型对象都有一个constructor属性,指向函数对象. eg: Person函数: P ...
- Spring和Springboot相关知识点整理
简介 本文主要整理一些Spring & SpringBoot应用时和相关原理的知识点,对于源码不做没有深入的讲解. 1. 思维导图 右键新窗口打开可以放大. 说明 使用@Configurati ...
- el-table表头与内容右边框错位问题
在用element写一个后台管理系统时遇到一个坑,el-table标签渲染出数据后表头th和内容会有错位,之前没有的 修改大小都没用 于是看百度搜索一波最终解决修改之前 虽然不大 但是别扭 在全局添加 ...
- Nginx深入学习(一篇搞定)
我们的口号是:人生不设限! 一.nginx简介 1.什么是nginx Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发 ...
- python+opencv实现图像自适应阈值的均衡化
内容涉及:列表遍历,图像均衡化,图像通道分离与合并 import cv2 import numpy as np import os for path in open("org_junheng ...
- Elasticsearch从入门到放弃:分词器初印象
Elasticsearch 系列回来了,先给因为这个系列关注我的同学说声抱歉,拖了这么久才回来,这个系列虽然叫「Elasticsearch 从入门到放弃」,但只有三篇就放弃还是有点过分的,所以还是回来 ...
- .netcore 网站启动后 502.5
网站启动后,报错 HTTP Error 502.5 - ANCM Out-Of-Process Startup Failure 请检查安装的.netcore runtime版本和hosting版本是否 ...
- python数据结构(三)
copy 复制对象,copy模块包含了两个行数copy和deepcopy,用于复制现有的对象. 浅副本(浅复制) copy()创建的浅副本是一个新容器,其中填充了原对象内容的引用 import cop ...
- Oracle Online Patching报错"This is not a RAC setup. OPatch cannot determine the local node name"
Oracle Online Patching报错"This is not a RAC setup. OPatch cannot determine the local node name&q ...