poj1328 radar installation
2016-03-17 16:27
225 查看
//以各岛为圆心做半径为b的圆,记录下每个圆与x坐标轴的左右交点,然后进行贪心选择。 本质上每一个圆的左右交点连成的线段就是一个雷达放置的位置范围 #include<iostream> #include<math.h> #include<algorithm> using namespace std; struct point{ double left;//左交点 double right;//右交点 }a[100],temp; int cmp(point a,point b) { return a.left<b.left?1:0;//按照左交点的坐标从小到大排序 } int main() { int n; double r; while(cin>>n>>r&&n&&r) { bool flag=false; for(int i=0;i<n;i++) { double an,bn;//岛的坐标 cin>>an>>bn; if(fabs(bn)>r)//说明无论雷达在哪里都不能覆盖岛 flag=true; else { a[i].left = an * 1.0 - sqrt(r * r - bn * bn); a[i].right = an * 1.0 + sqrt(r * r - bn * bn); } } if (flag) { cout << -1 << endl; } else { int count = 1; sort(a, a + n,cmp); //按照左交点从小到大排序 temp = a[0]; for (int i = 1; i < n; i++) { if (a[i].left > temp.right) { count++; temp = a[i]; } } cout << count << endl; } } return 0; }
相关文章推荐
- Java循环基础
- do { x } while (__LINE__ == -1)
- 计算前50个素数
- [leetcode] @python 115. Distinct Subsequences
- .net4.0调用非托管DLL的异常捕获
- sed 递归替换
- 学习英语
- 【编程工具】MyEclipse中的常用快捷键
- spring mvc3 静态文件放在WEB-INF下无法访问解决和解决@Controller失效问题
- python 刷题:实现队列
- Servlet映射的匹配原则,优先级
- uva 10954 add all
- IOS-57-导致内存未释放的常见原因(现象:dealloc不执行等)
- 牛顿下山法
- BB-Black: 如何擦除emmc里的内容?
- nginx tomcat 负载均衡
- 学习之spring属性文件注入
- Java流操作之转换流
- NOSQL的学习
- 环形进度条的实现方法总结和动态时钟绘制(CSS3、SVG、Canvas)