UVa 10382

來源:互聯網
上載者:User
/*  有一塊草坪,長為l,寬為w,  在它的水平中心線上有n個位置可以安裝噴水裝置,  各個位置上的噴水裝置的覆蓋範圍為以它們自己的半徑ri為圓。求出最少需要的噴水裝置個數。  將他映射到一邊,變成區間覆蓋問題   */#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>using namespace std;#define N 10005 struct line{  double left,right;       }a[N];bool cmp(line a,line b){  return a.left<b.left;     }int main(){    int n;    double l,w,x,r,y;    int num;        while(scanf("%d%lf%lf",&n,&l,&w)!=EOF)    {         num=0;         for(int i=0;i<n;i++)         {           scanf("%lf%lf",&x,&r);           if(2*r<=w)             continue;           y=sqrt(1.0*r*r-w*w/4.0);           a[num].left=x-y;           a[num].right=x+y;           num++;         }              if(num==0)         {          printf("-1\n");          continue;          }         sort(a,a+num,cmp);                  bool flag=0;         int  cnt=0;         double left=0;         double right=0;                 // for(int i=0;i<num;i++)        //  printf("%lf %lf++\n",a[i].left,a[i].right);                           if(a[0].left<=0)         {                           int i=0;              while(i<num)              {                  int j=i;                  while(j<num && a[j].left<=left)                  {                    if(a[j].right>right)                    {                      right=a[j].right;                    }                        j++;                      }                   if(i==j)  break;                  cnt++;                  left=right;                                    i=j;                                    if(left>=l)                  {                    flag=true;                    break;                             }              }          }                  if(flag)              printf("%d\n",cnt);         else              printf("-1\n");                                         }        return 0;    }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.