北大ACM1328——Radar Installation~~贪心
来源:互联网 发布:数据库元组 编辑:程序博客网 时间:2024/05/29 08:36
题目的大概意思是:给你N个坐标,雷达的半径为d,求至少安装多少个雷达才能将所有点覆盖。雷达都在 x 轴上,不能全部覆盖的就输出 -1.
思路大概是,先算出雷达覆盖每一个点的横坐标的范围。然后再来贪心求解有几个。
下面的是AC的代码:
#include <iostream>#include <algorithm>#include <cmath>using namespace std;class data{public:double x1, x2;};data xy[1005];int cmp(data a, data b) //从小到大排序{return a.x1 < b.x1;}int main(){int n, d, flag;int f = 1;double x, y;while(cin >> n >> d && n + d){flag = 0;for(int i = 0; i < n; i++){cin >> x >> y;if(y > d) //如果纵坐标大于d,说明怎样都不能覆盖flag = 1;xy[i].x1 = x - sqrt(d * d - y * y); //算出雷达可以在横坐标的左边的范围xy[i].x2 = x + sqrt(d * d - y * y); //右边的范围}if(flag) //不能的情况{cout << "Case " << f++ << ": " << -1 << endl;continue;}sort(xy, xy + n, cmp); //排序int count = 1;double temp = xy[0].x2; for(int j = 1; j < n; j++) //贪心求解{ if(xy[j].x2 < temp)temp = xy[j].x2;else if(xy[j].x1 > temp){count++;temp = xy[j].x2;}}cout << "Case " << f++ << ": " << count << endl;}return 0;}
0 0
- 北大ACM1328——Radar Installation~~贪心
- 贪心——Radar Installation
- poj 1328 Radar Installation——贪心
- poj1328——Radar Installation(贪心)
- POJ1328——Radar Installation(贪心)
- poj1328 Radar Installation —— 贪心
- poj 1328——Radar Installation(贪心)
- POJ1328 Radar Installation 贪心
- Radar Installation 贪心 hoj
- 1328 Radar Installation 贪心
- POJ1328 Radar Installation 贪心
- 【贪心】POJ1328 Radar Installation
- poj1328 Radar Installation 贪心
- Radar Installation(贪心)
- Radar Installation(贪心)
- 【POJ1328】Radar Installation 贪心
- POJ1328 Radar Installation 贪心
- 贪心- poj1328 Radar Installation
- POJ 1664 放苹果
- Cordys Java 后台模拟登入 且获取 WebService数据
- CSDN markdown 测试
- 散谈游戏保护那点事~就从_TP开始入手吧
- printf %p
- 北大ACM1328——Radar Installation~~贪心
- librtmp 时间戳超过 0xffffff时,FMS掉连接
- Pascal's Triangle II
- Code4app素材网站
- Linux du/df
- 黑马程序员_java基础学习笔记09_IO流
- PHP 超级全局变量
- 围观一下tp的游戏保护 <一>
- app包中的fragment和V4包中的fragment使用的区别