落谷p1325雷达安装(计算几何)
//p1325雷达安装 //很明显雷达应该安装在海岸线上
//而为了满足一个点被覆盖那在区间[x - sqrt(d ^ 2 - y ^ 2), x + sqrt(d ^ 2 - y ^ 2)]之中必有一个雷达
//现在就转换为一个区间覆盖问题:选尽量少的点使得每一个区间之内都有一个点
//把这些区间按右端点排序,记录last为上次雷达安装的点,若一个区间的左端点>last,那这个区间就不能被之前的点覆盖
//更新last=该区间的右端点(贪心选择,右端点有几率覆盖更多的区间),ans++ #include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm> using namespace std; int n;
double d;
double x[], y[];
double l[], r[];
int ra[], ans;
double last = -1000000000.0; bool cmp(int a, int b) {
return r[a] < r[b];
} int main() {
cin >> n >> d;
for (int i = ; i <= n; i++) {
cin >> x[i] >> y[i];
if (y[i] > d) {
cout << -;
return ;
}
l[i] = x[i] - sqrt(d * d - y[i] * y[i]);
r[i] = x[i] + sqrt(d * d - y[i] * y[i]);
}
for (int i = ; i <= n; i++) ra[i] = i;
sort(ra + , ra + n + , cmp);
for (int i = ; i <= n; i++) {
if (l[ra[i]] > last) {
ans++;
last = r[ra[i]];
}
}
cout << ans;
return ;
}
落谷p1325雷达安装(计算几何)的更多相关文章
- 洛谷 P1325 雷达安装 解题报告
P1325 雷达安装 题目描述 描述: 假设海岸线是一条无限延伸的直线.它的一侧是陆地,另一侧是海洋.每一座小岛是在海面上的一个点.雷达必须安装在陆地上(包括海岸线),并且每个雷达都有相同的扫描范围d ...
- 洛谷P1325 雷达安装
题目 考虑对于一个小岛,如果有雷达可以覆盖它,则这些雷达肯定在一个区间里,则原题内容则变为区间选点问题 #include <bits/stdc++.h> using namespace s ...
- luogu P1325 雷达安装
题目描述 描述: 假设海岸线是一条无限延伸的直线.它的一侧是陆地,另一侧是海洋.每一座小岛是在海面上的一个点.雷达必须安装在陆地上(包括海岸线),并且每个雷达都有相同的扫描范围d.你的任务是建立尽量少 ...
- P1325 雷达安装
传送门 思路: 采取贪心的思想. 把每个岛屿看作圆心,以雷达的范围 d 为半径,求出与 x 轴的左右两个交点,两交点所夹的区间就需要放置一个雷达,这样就把这道题转换为了区间取点问题.在枚举岛屿时,记录 ...
- 【luogu1325】雷达安装--贪心
题目描述 描述: 假设海岸线是一条无限延伸的直线.它的一侧是陆地,另一侧是海洋.每一座小岛是在海面上的一个点.雷达必须安装在陆地上(包括海岸线),并且每个雷达都有相同的扫描范围d.你的任务是建立尽量少 ...
- luogu 1325 雷达安装
题目链接 题意 在\(x\)轴上方有\(n\)个海岛,要在\(x\)轴建雷达,每个雷达的覆盖范围为半径为\(d\)的圆,问至少要建多少个雷达能覆盖所有海岛. 思路 对于每个海岛计算出雷达建立在什么范围 ...
- AC日记——组合数问题 落谷 P2822 noip2016day2T1
题目描述 组合数表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的定 义,我们可以给出计算 ...
- 落谷p3376 最大流EdmondsKarp增广路模板
参考: https://blog.csdn.net/txl199106/article/details/64441994 分析: 该算法是用bfs求出是否有路从s到t, 然后建立反向边(关于反向边), ...
- 落谷P3941 入阵曲
题目背景 pdf题面和大样例链接:http://pan.baidu.com/s/1cawM7c 密码:xgxv 丹青千秋酿,一醉解愁肠. 无悔少年枉,只愿壮志狂. 题目描述 小 F 很喜欢数学,但是到 ...
随机推荐
- Yar并行的RPC框架的简单使用
前言: RPC,就是Remote Procedure Call的简称呀,翻译成中文就是远程过程调用 RPC要解决的两个问题: 解决分布式系统中,服务之间的调用问题. 远程调用时,要能够像本地调用一样方 ...
- Python中的代码块及其缓存机制、深浅copy
一.代码块及其缓存机制 代码块 一个模块.一个函数.一个类.一个文件等都是一个代码块:交互式命令下,一行就是一个代码块. 同一个代码块内的缓存机制(字符串驻留机制) 机制内容:Python在执行同一个 ...
- MySQL复制方法
MySQL的二进制日志,MySQL复制原理,MySQL主从模式搭建,MySQL双主模式搭建,MySQL级联模式搭建,MySQL半同步模式复制 一.二进制日志 1.概念 MySQL的二进制日志(bina ...
- Tomcat 配置目录及文件说明!
==================================================================================
- 解决 Anaconda 3.7更新出现CondaHTTPError与SSLError
1.问题描述: An HTTP error occurred when trying to retrieve this URL. HTTP errors are often intermittent, ...
- 操作系统OS - 线程中的join()为什么叫join
1. 问题:很好奇为什么叫Join? 参考: https://blog.csdn.net/frankarmstrong/article/details/55504161 https://stackov ...
- PTA的Python练习题(十)
从 第3章-22 输出大写英文字母 开始 1. a=str(input()) b='' for i in a: if 'A'<=i<='Z' and i not in b: b=b+i i ...
- [转]利用 Commons-Fileupload 实现文件上传
转载 Java Web开发人员可以使用Apache文件上传组件来接收浏览器上传的文件,该组件由多个类共同组成,但是,对于使用该组件来编写文件上传功能的Java Web开发人员来说,只需要了解和使用其中 ...
- 学习不一样的vue5:vuex(完结)
学习不一样的vue5:vuex(完结) 发表于 2017-09-10 | 分类于 web前端| | 阅读次数 4029 首先 首发博客: 我的博客 项目源码: 源码(喜欢请star) 项目预览 ...
- ch8 固定宽度、流式、弹性布局
假设浏览器窗口设置为1250px:wrapper的宽度为960px:content的宽度为920px:确保了wrapper居中时两边有20px的间距: secondary的宽度为230px: pr ...