poj 貪心相關之1328 Radar Installation

poj 貪心相關之1328 Radar Installation
Accepted 172K 16MS

#include<iostream>
#include<cstring>
#include<cstdio>
#include<math.h>
#include<algorithm>
#include<vector>
#include<queue>
#define MAXNUM 1000
using namespace std;
struct point
{
    float start;
    float end;
};
bool cmp(point p1, point p2)
{
    return p1.end < p2.end;
}
int m, n;
float a[MAXNUM], b[MAXNUM];
point P[MAXNUM];
int main()
{
    //freopen("1.txt", "r", stdin);
    int i, j, Case, cnt;
    bool k;
    float tmp;
    Case = 1;
    while (scanf("%d%d", &m, &n) != EOF && (m || n))
    {
        k = 0;
        for (i = 0; i < m; i++)
        {
            scanf("%f%f", &a[i], &b[i]);
        }
        for (i = 0; i < m; i++)
        {
            if (b[i] > n)
            {
                k = 1;
                break;
            }
            tmp = float(n);
            tmp = sqrt(tmp*tmp - b[i] * b[i]);
            P[i].start = a[i] - tmp;
            P[i].end = a[i] + tmp;
        }
        if (k)
        {
            printf("Case %d: -1\n", Case++);
        }
        else
        {
            sort(P, P + m, cmp);
            cnt = 1;
            tmp = P[0].end;
            for (i = 0; i < m; i++)
            {
                if (P[i].start <= tmp)
                    continue;
                else
                {
                    cnt++;
                    tmp = P[i].end;
                }
            }
            printf("Case %d: %d\n", Case++, cnt);
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章