题目链接

题意

在\(x\)轴上方有\(n\)个海岛,要在\(x\)轴建雷达,每个雷达的覆盖范围为半径为\(d\)的圆,问至少要建多少个雷达能覆盖所有海岛。

思路

对于每个海岛计算出雷达建立在什么范围(\(x\)轴上的一条线段)内能覆盖到它。排序并计算线段的交。

Code

#include <bits/stdc++.h>
#define inf 0x3f3f3f3f
#define maxn 200010
using namespace std;
typedef long long LL;
struct node {
double l, r;
}a[maxn];
int x[maxn], y[maxn];
bool cmp(node u, node v) {
return u.l < v.l || (u.l == v.l && u.r < v.r);
}
int main() {
int n, d;
scanf("%d%d", &n, &d);
for (int i = 0; i < n; ++i) scanf("%d%d", &x[i], &y[i]);
for (int i = 0; i < n; ++i) {
if (y[i] > d) { printf("-1\n"); return 0; }
double dx = sqrt(pow(d,2)-pow(y[i],2));
a[i].l = x[i] - dx, a[i].r = x[i] + dx;
}
sort(a, a+n, cmp);
double l = -inf, r = -inf;
int cnt = 0;
for (int i = 0; i < n; ++i) {
if (a[i].l <= r) l = max(l, a[i].l), r = min(r, a[i].r);
else ++cnt, l = a[i].l, r = a[i].r;
}
printf("%d\n", cnt);
return 0;
}

最新文章

  1. 设置 github 帐号user.name和邮箱user.email
  2. React组件生命周期过程说明
  3. 文件名唯一(A.txt =&gt; An.txt)
  4. UILabel 根据内容的多少来计算label的frame
  5. 【练习】HTML+CSS
  6. OO面向对象课程作业1-3总结
  7. hive的map类型处理
  8. Java内存模型与指令重排
  9. React 系列 - 写出优雅的路由
  10. 12px以下字体显示问题
  11. Java代码实现文件添加数字签名、验证数字签名
  12. DDD领域模型之分配权限(十三)
  13. 虚拟机(VMware Workstation)的使用方法(转)
  14. centos服务器删除/usr目录怎么办
  15. H5C3动画
  16. 深入浅出Spark的Checkpoint机制
  17. 安卓开发笔记——打造万能适配器(Adapter)
  18. Angular 4 路由介绍
  19. Oracle数据库多表查询,子查询,集合运算
  20. 【BZOJ1458】士兵占领 最小流

热门文章

  1. 在Scrollview中使用AutoLayout
  2. FMDB中的数据处理
  3. C语言结构体和共用体_07
  4. dev gridview columns代码管理
  5. ubuntu14.04搭建LAMP环境(nginx,php,mysql,linux)详解
  6. Linux菜鸟起飞之路【八】文本编辑器
  7. DNS预解析 dns-prefetch
  8. 阿里云全国快递物流查询api接口
  9. Django之模型---ORM 单表操作
  10. selenium2通过linkText/partialLinkText定位元素