博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hlg1414安装雷达【贪心】
阅读量:5111 次
发布时间:2019-06-13

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

大意:

如上图:坐标轴上有一些点  然后在x轴上安装雷达 告诉你雷达的最大扫描半径  问你最少用多少个雷达就能把所有的点扫描到

 

分析:

从每个告诉的点都画一个圆,那么它就会和x轴有两个交点   这两个交点之内的任何一个点都能建立雷达扫描的到

我们把两个点之间看做一条线段

那么问题就转化成了  对于x轴上的一些线段  用最少的点覆盖掉

我们只要把 这些线段按右边界按从小到大排序

那么这些线段就是右边界一次增大的了

若一条线段的后面线段的左边界比该边界小  那么就可以通过覆盖这个点来得到

只要一个标记就可以了

 

代码:

1 #include 
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 8 const int maxn = 1005; 9 10 struct Node {11 double x, y;12 }node[maxn], ans[maxn];13 14 double dist(Node n1, Node n2) {15 return sqrt((n1.x - n2.x) * (n1.x - n2.x) + (n1.y - n2.y) * (n1.y - n2.y) );16 }17 18 int eps(double x) {19 if(fabs(x) < 1e-6) {20 return 0;21 } 22 if(x < 0 ) {23 return -1;24 }25 return 1;26 }27 28 bool cmp(Node n1, Node n2) {29 if(eps(n1.y - n2.y) != 0) {30 return n1.y < n2.y;31 } 32 return n1.x < n2.x;33 }34 int vis[maxn];35 36 int main() {37 int n; double r;38 double a, b;39 int t = 1;40 while(scanf("%d %lf",&n, &r) ) {41 if(n == 0 && eps(r) == 0 ) break;42 int cnt = 0;43 for(int i = 0; i < n; i++) {44 scanf("%lf %lf", &a, &b);45 if(eps(r - b) != -1) {46 node[cnt++] = (Node) { a, b };47 }48 }49 for(int i = 0; i < cnt; i++) {50 ans[i].x = node[i].x - sqrt(r * r - node[i].y * node[i].y);51 ans[i].y = node[i].x + sqrt(r * r - node[i].y * node[i].y);52 }53 sort(ans, ans + cnt, cmp);54 int ans_cnt = 0;55 memset(vis, 0, sizeof(vis));56 for(int i = 0; i < cnt; i++) {57 if(vis[i]) continue;58 ans_cnt++;59 for(int j = i + 1; j < cnt; j++) {60 if(vis[j]) continue;61 if(eps(ans[j].x - ans[i].y) != 1) {62 vis[j] = 1;63 }64 }65 vis[i] = 1;66 }67 if(cnt != n) {68 ans_cnt = -1;69 }70 printf("Case %d: %d\n",t++, ans_cnt);71 }72 return 0;73 }
View Code

 

转载于:https://www.cnblogs.com/zhanzhao/p/4031456.html

你可能感兴趣的文章
在Server上得到数据组装成HTML后导出到Excel。两种方法。
查看>>
浅谈项目需求变更管理
查看>>
经典算法系列一-快速排序
查看>>
设置java web工程中默认访问首页的几种方式
查看>>
ASP.NET MVC 拓展ViewResult实现word文档下载
查看>>
jQuery Mobile笔记
查看>>
8、RDD持久化
查看>>
第二次团队冲刺--2
查看>>
查询数据(后台到前台传递数据,显示数据)
查看>>
集群tomcat+apache配置文档
查看>>
VMware Tools安装
查看>>
2019.04.09 电商20 购物车的展示
查看>>
Linux上架设boost的安装及配置过程
查看>>
[转载]加密算法库Crypto——nodejs中间件系列
查看>>
zoj 2286 Sum of Divisors
查看>>
OO5~7次作业总结
查看>>
如何判断主机是大端还是小端(字节序)
查看>>
Centos7 日志查看工具
查看>>
使用Xshell密钥认证机制远程登录Linux
查看>>
BZOJ2459 : [BeiJing2011]神秘好人
查看>>