POJ1328 Radar Installation 区间贪心 (增加理解)

/*
 * POJ1328  Radar Installation 区间贪心
        http://poj.org/problem?id=1328

尽可能少的雷达站:贪心策略
 转换思维:以岛屿为核心

 ps:控制台组之间  输入多个换行符居然可以!!!
 注意理解

 Presentation Error  显示错误 输出格式 空格不对引起
        */

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>

using namespace std;

const int MAXN = 1010;
struct Interval{
    double left;
    double right;
};
Interval arr[MAXN];
bool Compare(Interval a,Interval b){
    return a.left < b.left;
}
int main(){
    int n,d;
    int caseNumber = 0;
    while(scanf("%d%d",&n,&d) != EOF){
        if(n==0 && d == 0){
            break;
        }
        bool flag = true;
        caseNumber++;

        for(int i=0;i<n;++i){
            int x,y;
            scanf("%d%d",&x,&y);
            if(y>d) {
                flag = false;
            }
            else{
                arr[i].left = x - sqrt(d*d - 1.0*y*y);//或者强制类型转换
                arr[i].right = x + sqrt(d*d - 1.0*y*y);
            }

        }

        if(!flag){
            printf("Case %d: %d\n",caseNumber,-1);
        }else{
            sort(arr,arr+n,Compare);
            double current = arr[0].right;
            int answer = 1;
            for(int i=1;i<n;++i){
                if(arr[i].left <= current){ //!!!
                    current = min(current,arr[i].right);
                }else{
                    current = arr[i].right;
                    answer++;
                }
            }
            printf("Case %d: %d\n",caseNumber,answer);
        }

    }

    return 0;
}

全部评论

相关推荐

12-13 14:51
已编辑
井冈山大学 算法工程师
龙虾x:算法比你强的没有你美,比你美的…..算了已经没有比你美的了
工作两年想退休了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务