博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 1328 Radar Installation
阅读量:5061 次
发布时间:2019-06-12

本文共 1449 字,大约阅读时间需要 4 分钟。

题意:在一片海上有一堆岛,设海岸线为x轴,海为第一二象限,在x轴上可以放置雷达,每个雷达的作用范围是一个半径为d的圆,问最少放几个雷达能把所有岛都包含。

 

解法:贪心。一开始的想法是把岛按横坐标排序,枚举正好在雷达作用圆的边界上的岛对应的雷达坐标,选择能够覆盖这个岛之前所有的岛的点,并且把所有能覆盖的岛标记。但是不知道为啥就wa了……可能是精度问题……也可能是想错了orz。后来看了一下题解,这个问题可以转化为区间覆盖问题,以每个岛为圆心画一个半径为d圆,与x轴能产生两个交点,表示雷达放在该区间内就能覆盖这个岛,所以只要将区间按左边界排序,贪心的求有公共区间的区间集的最小个数就可以了(自以为机智的处理了精度……然后就wa了)。

 

代码:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long longusing namespace std;const double eps = 1e-9;struct node{ int x, y; bool operator < (const node &tmp) const { return x < tmp.x; }}p[1005];struct node1{ double l, r; bool operator < (const node1 &tmp) const { return l < tmp.l; }}q[1005];int main(){ int n, d; int cse = 1; while(~scanf("%d%d", &n, &d) && (n + d)) { int flag = 0; for(int i = 0; i < n; i++) { scanf("%d%d", &p[i].x, &p[i].y); if(p[i].y > d) flag = 1; else { double tmp = sqrt((double)d * d - p[i].y * p[i].y); q[i].l = (double)p[i].x - tmp; q[i].r = (double)p[i].x + tmp; } } printf("Case %d: ", cse++); if(flag) { printf("-1\n"); continue; } sort(q, q + n); int ans = 1; double tmp = q[0].r; for(int i = 1; i < n; i++) { if(q[i].l > tmp)//更新左边界 { ans++; tmp = q[i].r; } else if(q[i].r < tmp)//更新右边界 tmp = q[i].r; } printf("%d\n", ans); } return 0;}

  

转载于:https://www.cnblogs.com/Apro/p/4498529.html

你可能感兴趣的文章
新作《ASP.NET MVC 5框架揭秘》正式出版
查看>>
“前.NET Core时代”如何实现跨平台代码重用 ——源文件重用
查看>>
【POJ1845】Sumdiv(数论/约数和定理/等比数列二分求和)
查看>>
在WPF中使用Caliburn.Micro搭建MEF插件化开发框架
查看>>
IdentityServer4-用EF配置Client(一)
查看>>
UWP: 掌握编译型绑定 x:Bind
查看>>
asp.net core系列 35 EF保存数据(2) -- EF系列结束
查看>>
WPF程序加入3D模型
查看>>
WPF中实现多选ComboBox控件
查看>>
读构建之法第四章第十七章有感
查看>>
C#中的IEnumerable<T>知识点
查看>>
android访问链接时候报java.net.MalformedURLException: Protocol not found
查看>>
dwz ie10一直提示数据加载中
查看>>
Windows Phone开发(4):框架和页 转:http://blog.csdn.net/tcjiaan/article/details/7263146
查看>>
Windows Phone Marketplace 发布软件全攻略
查看>>
Unity3D研究院之打开Activity与调用JAVA代码传递参数(十八)【转】
查看>>
语义web基础知识学习
查看>>
hexo个人博客添加宠物/鼠标点击效果/博客管理
查看>>
python asyncio 异步实现mongodb数据转xls文件
查看>>
关于WPF的2000件事 02--WPF界面是如何渲染的?
查看>>