• 【贪心】雷达问题


    题目描述

    张琪曼等人用时空雷达定位李旭琳所在的空间位置。如图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

     

    解题思路:该题与上一题异曲同工

     1 #include <iostream>
     2 #include <cstring>
     3 #include <cstdio>
     4 #include <algorithm>
     5 #include <math.h>
     6 using namespace std;
     7 struct node
     8 {
     9     double l,r;
    10 };
    11 node a[1005];
    12 bool cmp(node a,node b)
    13 {
    14     return a.r<b.r;
    15 }
    16 int main()
    17 {
    18     int n,k=1;
    19     int flag;
    20     double d;
    21     while(cin>>n>>d)
    22     {
    23         flag=1;
    24         if(n==0&&d==0)
    25         {
    26             break;
    27         }
    28         double x,y;
    29         for(int i=0;i<n;i++)
    30         {
    31             cin>>x>>y;
    32             if(!flag)
    33             {
    34                 continue;
    35             }
    36             if(y>d)
    37             {
    38                 flag=0;
    39                 continue;
    40             }
    41             a[i].l=x-sqrt(d*d-y*y);
    42             a[i].r=x+sqrt(d*d-y*y);
    43         }
    44         printf("Case %d: ", k++);
    45         if(!flag)
    46         {
    47             printf("-1
    ");
    48             continue;
    49         }
    50         sort(a,a+n,cmp);
    51         double temp=-10000;
    52         int ans=0;
    53         for(int i=0;i<n;i++)
    54         {
    55             if(temp<a[i].l)
    56             {
    57                 ans++;
    58                 temp=a[i].r;
    59             }
    60         }
    61         cout << ans << endl;
    62     }
    63 
    64     return 0;
    65 }
    View Code


  • 相关阅读:
    IOS的系统手机 宽度无法自适应 解决办法
    iframe 设置背景透明
    thinkphp5 常用的2个方法
    thinkphp引入后台模板文件的路径怎么写?
    html的confirm()
    php 如何往数组里添加数据
    thinkphp51 重定向 redirect()
    【Oracle 触发器】(4)触发器应用场景--数据的确认
    【Oracle 触发器】(3)触发器应用场景--复杂的安全性检查
    【Oracle 触发器】(2)触发器的分类(语句级/行级)
  • 原文地址:https://www.cnblogs.com/SoulSecret/p/8425981.html
Copyright © 2020-2023  润新知