zoukankan      html  css  js  c++  java
  • Radar Installation

    1328 poj

    Time Limit: 1000MS   Memory Limit: 10000K
    Total Submissions: 58386   Accepted: 13155

    Description

    Assume the coasting is an infinite straight line. Land is in one side of coasting, sea in the other. Each small island is a point locating in the sea side. And any radar installation, locating on the coasting, can only cover d distance, so an island in the sea can be covered by a radius installation, if the distance between them is at most d. 

    We use Cartesian coordinate system, defining the coasting is the x-axis. The sea side is above x-axis, and the land side below. Given the position of each island in the sea, and given the distance of the coverage of the radar installation, your task is to write a program to find the minimal number of radar installations to cover all the islands. Note that the position of an island is represented by its x-y coordinates.
     
    Figure A Sample Input of Radar Installations


    Input

    The input consists of several test cases. The first line of each case contains two integers n (1<=n<=1000) and d, where n is the number of islands in the sea and d is the distance of coverage of the radar installation. This is followed by n lines each containing two integers representing the coordinate of the position of each island. Then a blank line follows to separate the cases. 

    The input is terminated by a line containing pair of zeros 

    Output

    For each test case output one line consisting of the test case number followed by the minimal number of radar installations needed. "-1" installation means no solution for that case.

    Sample Input

    3 2
    1 2
    -3 1
    2 1
    
    1 2
    0 2
    
    0 0
    

    Sample Output

    Case 1: 2
    Case 2: 1
    

    Source

     
    先将之转化为各区间 接下来就是区间选点问题了 排序后选最后一个点就OK;
     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<algorithm>
     4 #include<math.h>
     5 using namespace std;
     6 struct node{
     7     double x;
     8     double y;
     9     double l;
    10     double r;
    11 }island[1005];
    12 
    13 bool cmp(node a,node b)
    14 {
    15     if(a.r!=b.r)
    16         return a.r<b.r;
    17     else
    18         return a.l>b.l;
    19 }
    20 
    21 int main()
    22 {
    23     int n,i,j,k,t=0,flg,num;
    24     double d,local;
    25     while(scanf("%d %lf",&n,&d)!=EOF)
    26     {
    27         flg=1;t++;num=1;
    28         if(n==0 && d==0)
    29         {
    30             break;
    31         }
    32         for(i=1;i<=n;i++)
    33         {
    34             scanf("%lf %lf",&island[i].x,&island[i].y);
    35             if(island[i].y>d)
    36                 flg=0;
    37         }
    38         if(flg==0)
    39         {
    40             printf("Case %d: -1
    ",t);
    41             continue;
    42         }
    43         for(i=1;i<=n;i++)
    44         {
    45             island[i].l=island[i].x-sqrt(d*d-island[i].y*island[i].y);
    46             island[i].r=island[i].x+sqrt(d*d-island[i].y*island[i].y);
    47         }
    48         sort(island+1,island+n+1,cmp);
    49         local=island[1].r;
    50         for(i=2;i<=n;i++)
    51         {
    52             if(island[i].l<=local)
    53                 continue;
    54             else
    55             {
    56                 num++;
    57                 local=island[i].r;
    58             }
    59         }
    60         printf("Case %d: %d
    ",t,num);
    61     }
    62     return 0;
    63 }
    View Code
  • 相关阅读:
    【Java】CGLIB动态代理
    【Java】JDK动态代理
    Css 选择器优先级整理_Css 选择器优先级详解
    JavaScript 操作浏览器全屏整理_Js 控制浏览器全屏处理
    c# 调用浏览器打开网址并全屏_C#打开本地浏览器
    Css 文字垂直方向居中整理
    JavaScript Promise 对象使用讲解
    ArgumentException: 'gb2312' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
    .Net Excel操作之NPOI,操作Excel单元格富文本,单元格颜色处理
    iis 403禁止访问
  • 原文地址:https://www.cnblogs.com/cyd308/p/4444832.html
Copyright © 2011-2022 走看看