贪心

#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
struct Radar {
double start,end;
} radar[];
bool cmp(Radar a,Radar b) {
return a.start<b.start;
}
int main() {
int n,d,x,y,m,num,flag;
double l,r;
m = ;
while(scanf("%d%d",&n,&d)) {
if(!n && !d) //如果为0
break;
flag = true;
for(int i = ; i < n; i++) {
scanf("%d%d",&x,&y);
if(y > d)
flag = false;
radar[i].start = x - sqrt(d * d - y * y); //勾股定理
radar[i].end = x + sqrt(d * d - y * y); //区间覆盖范围
}
if(!flag) {
printf("Case %d: -1\n",m++);
continue;
}
sort(radar,radar + n,cmp); //排序 n为岛屿数目
num = ,l = radar[].start,r = radar[].end;//l和r是double l为最左端的区间的左端 r为右端
for(int i = ; i < n; i++) {
if(radar[i].start >= l && radar[i].end <= r) { // 某两块区间存在包含关系
l = radar[i].start;
r = radar[i].end;
} else if(radar[i].start <= r && radar[i].end >= r) //某两个区间交叉
l = radar[i].start;
else if(radar[i].start > r) { //两个区间没有交集
l = radar[i].start;
r = radar[i].end;
num++;
}
}
printf("Case %d: %d\n",m++,num);
}
return ;
}

最新文章

  1. NOSDK--关于android傻瓜式的分包设想
  2. vi命令模式下快速注释代码的方法
  3. Angular中使用Rainbow
  4. Android中ProgressDialog的简单示例
  5. mybatis审查要点
  6. JUnit使用Eclipse建立Test Case - 就是爱Java
  7. mbed OS - ARM关于物联网(IoT)的战略布局
  8. Java多线程之synchronized(五)
  9. 破解企业QQ对个人QQ登陆的限制(原创)
  10. Yii2按需加载图片怎么做?
  11. JavaScript继承详解
  12. 一:SqlServer中的 CEILING函数和 FLOOR函数以及ROUND()
  13. Eclipse编程中免除alt+斜杠,设置自动提示
  14. vue学习之组件
  15. php正则表达式 剔除字符串中 ,除了汉字的字符(只保留汉字) php 正则 只保留汉字,剔除所有符号
  16. step_by_step_Angularjs-UI-Grid使用简介
  17. PythonStudy——字符串常用操作 String common operations
  18. 记Dagger2使用过程中的一个BUG--compileGoogleDebugJavaWithJavac
  19. DATAGUARD的搭建
  20. [py][mx]xadmin详细设置-将app注册到xadmin

热门文章

  1. js参数自定义
  2. Python标准库之re模块
  3. GYCTF Node game
  4. ansi sql 语法 切换为 oracle 语法
  5. Dev 控件笔记1 repositoryItemLookUpEdit 控件
  6. java性能分析 - CPU飙高分析工具
  7. adworld MISC002 | Linux的挂载文件系统的运用
  8. sqlalchemy_mptt一次调优
  9. MySQL8.0.11解压版安装详细教程
  10. 强网杯2018 - nextrsa - Writeup