POJ-1328 Radar Installation 贪心
2012-06-28 22:55
423 查看
以每个点算出左右覆盖的雷达所在x轴范围,然后贪心计算出所需圆的个数。
当后一个点的圆心在x轴的左坐标在前一个点的右坐标的右坐标之前,则这个点就会被覆盖。
代码如下:(C++能过,G++ runtime error)
当后一个点的圆心在x轴的左坐标在前一个点的右坐标的右坐标之前,则这个点就会被覆盖。
代码如下:(C++能过,G++ runtime error)
#include <cstring> #include <cstdlib> #include <cstdio> #include <cmath> #include <algorithm> using namespace std; int N, R; struct Node { double l, r; bool operator < (Node t) const { if (r != t.r) { return t.r > r; } } }e[1010]; int deal() { int ans = 1; double pos = e[1].r; for (int i = 2; i <= N; ++i) { if (e[i].l > pos) { ++ans; pos = e[i].r; } } return ans; } int main() { int x, y, flag, ca = 0; while (scanf("%d %d", &N, &R), N|R) { flag = 0; for (int i = 1; i <= N; ++i) { scanf("%d %d", &x, &y); if (y > R) { flag = 1; } else { double dis = sqrt(double(R*R-y*y); e[i].l = x - dis; e[i].r = x + dis; } } printf("Case %d: ", ++ca); if (flag) { puts("-1"); } else { sort(e+1, e+1+N); int t = deal(); printf("%d\n", t); } } return 0; }
相关文章推荐
- 【占坑】POJ 1328做题笔记 #贪心#
- POJ 1328 Radar Installation(贪心)
- 文章标题 POJ 1328 : Radar Installation(贪心)
- POJ 1328(贪心)
- POJ 1328 Radar Installation 贪心
- POJ 1328 Radar Installation 区间贪心
- POJ 1328(Radar Installation 区间贪心)
- POJ 1328 Radar Installation(区间贪心)
- poj1328 Radar Installation(贪心)
- 贪心-poj-1328-Radar Installation
- Poj 1328 贪心之区间选点+勾股定理**
- POJ——1328(贪心)
- POJ 1328 - Radar Installation [贪心]
- [ACM] POJ 1328 Radar Installation (贪心,区间选点问题)
- POJ 1328 Radar Installation 贪心题解
- poj 1328 Radar Installation(贪心)
- POJ 1328 Radar Installation 贪心
- POJ 1328-Radar Installation(贪心)
- Radar Installation - POJ 1328 贪心
- poj 1328 Radar Installation (贪心)