• Radar Installation


    题目链接:http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=27586

    题意:

           在海岸线上摆放雷达并限定雷达覆盖半径d,再以海岸线为轴,给定海上岛屿坐标,求至少需要多少雷达可以覆盖所以岛屿,如果不能输出'-1'。

    案例:

            Sample Input

            3 2

            1 2

            -3 1

         2 1

            1 2

            0 2

            0 0

            Sample Output     

      Case 1: 2
      Case 2: 1

    分析:

            可以转换为区间覆盖问题。以岛屿为圆心,雷达扫射半径为半径,求出此圆与x轴(即海岸线)交点坐标,两交点坐标间即为雷达摆放区间(包括两交点(在此区间任意位置摆放雷达均可覆盖岛屿))。接下来即为区间覆盖求解问题了。

    源代码:

     1 #include<cstdio>
     2 #include<cmath>
     3 #include<algorithm>
     4 using namespace std;
     5 int n,num;
     6 struct former
     7 {
     8     double l;
     9     double r;
    10 }a[1005];
    11 double cmp(former m,former t)//区间排序
    12 {
    13     if(m.r==t.r) return m.l>t.l;
    14     else 
    15         return m.r<t.r;
    16 }
    17 void change()//计算所需雷达
    18 {
    19     int k=0;
    20     sort(a,a+n,cmp);
    21     for(int j=1;j<n;j++)
    22     {
    23         if(a[j].l>a[k].r)
    24         {
    25             num++;
    26             k=j;
    27         }
    28     }
    29 }
    30 int main()
    31 {
    32     int cnt=0;
    33     double x,y,d;
    34     while(scanf("%d%lf",&n,&d)&&n&&d)
    35     {
    36         num=1;
    37         for(int i=0;i<n;i++)
    38         {
    39             scanf("%lf%lf",&x,&y);
    40             if(d<y||d<0)//判断是否有岛屿超出雷达覆盖范围
    41                 num=-1;
    42              a[i].l=x-sqrt(d*d-y*y);//岛屿转换可摆放雷达区间
    43             a[i].r=x+sqrt(d*d-y*y);
    44         }
    45         if(num==-1)
    46             printf("Case %d: -1
    ",++cnt);
    47         else
    48         {
    49             change();
    50             printf("Case %d: %d
    ",++cnt,num);
    51         }
    52     }
    53     return 0;
    54 }
  • 相关阅读:
    Linux命令——tac、rev
    Linux命令——pr
    Linux命令——column
    【问题】显示每个用户近期登陆系统次数
    Git分支
    如何使用Systemctl管理系统服务和单元?
    IPTables 和 Netfilter 框架
    Nginx安装及配置
    WMware Workstation——时间和时区问题
    WMware Workstation——网络类型:NAT、bridge、host-only
  • 原文地址:https://www.cnblogs.com/huaszjh/p/4719074.html
Copyright © 2020-2023  润新知