zoukankan      html  css  js  c++  java
  • 【贪心】雷达问题

    题目描述

    张琪曼等人用时空雷达定位李旭琳所在的空间位置。如图7.3所示,时空雷达装在一条直线上,直线上方是空间海洋,每个人在空间海洋的位置就如同大海中的岛屿,这些人的位置已知,每一个雷达的扫描范围是一个半径为d的圆形区域,问最少需要多少个雷达覆盖所有的人(岛屿)。

    输入

    输入包括多组测试数据,每组测试数据第一行为两个整数n (1≤n≤1000) 和 d,即岛屿数和雷达扫描半径。随后n行每行两个整数表示岛屿坐标。每组测试数据以空行间隔,所有测试数据以0 0结束。

    输出

    输出最少需要安装雷达数,每组一行。若无解以-1表示。

    样例输入

    3 2
    1 2
    -3 1
    2 1

    1 2
    0 2

    0 0

    样例输出

    Case 1: 2
    Case 2: 1

    #include <iostream>
    #include <string>
    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <algorithm>
    #include <vector>
    #include <queue>
    #include <deque>
    #include <map>
    #define range(i,a,b) for(int i=a;i<=b;++i)
    #define LL long long
    #define rerange(i,a,b) for(int i=a;i>=b;--i)
    #define fill(arr,tmp) memset(arr,tmp,sizeof(arr))
    using namespace std;
    pair<double,double>aa[115];
    int n,d;
    void init(){
    
    }
    void swap(int&a,int&b){
        int tmp=a;
        a=b;
        b=tmp;
    }
    bool cmp(pair<double,double>a,pair<double,double>b){
        return a.second<b.second;
    }
    void solve(){
        int cas=0;
        while(cin>>n>>d,n,d){
            bool flag=true;
            double x,y;
            range(i,0,n-1){
                cin>>x>>y;
                if(!flag)continue;
                if(y>d){
                    flag=false;
                    continue;
                }
                aa[i].first=(x-sqrt(d*d-y*y));
                aa[i].second=(x+sqrt(d*d-y*y));
            }
            cout<<"Case "<<++cas<<": ";
            if(!flag){
                cout<<-1<<endl;
                continue;
            }
            sort(aa,aa+n,cmp);
            double tmp=-123845;int ans=0;
            range(i,0,n-1)if(tmp<aa[i].first){
                ++ans;tmp=aa[i].second;
            }
            cout<<ans<<endl;
        }
    }
    int main() {
        init();
        solve();
        return 0;
    }
    View Code
  • 相关阅读:
    JS事件委托学习(转)
    js 监听监键盘动作(转)
    JS操作JSON总结
    靶机练习-VulnHub-Toopo
    Web安全测试学习笔记
    Web安全测试学习笔记
    PentesterLab练习
    CTF-攻防世界-supersqli(sql注入)
    工具学习
    漏洞复现-ElasticSearch 命令执行漏洞(CVE-2014-3120)
  • 原文地址:https://www.cnblogs.com/Rhythm-/p/9344574.html
Copyright © 2011-2022 走看看