poj1328

2014-11-23 21:27:51 · 作者: · 浏览: 9

题目大意:给定几个点,求用几个雷达能覆盖全部的点,输入的点为坐标,雷达的半径首先给定!

贪心求解:


#include  
#include  
double x[1005],y[1005]; 
double left[1005],right[1005]; 
double r; 
int n,flag,test; 
int main() 
{ 
    test=1; 
    while(scanf("%d%lf",&n,&r)!=EOF&&(n||r)) 
    { 
     
        int i,j,sum; 
        double  temp;  
        flag=0; 
        sum=1; 
        for(i=0;ir) 
            { 
                flag=1; 
            }        
        } 
        if(flag==1) 
        { 
            printf("Case %d: -1\n",test++); 
            continue; 
        }     
        for(i=0;ix[j+1])   
                {   
                    temp=x[j];   
                    x[j]=x[j+1];   
                    x[j+1]=temp;   
                    temp=y[j];   
                    y[j]=y[j+1];   
                    y[j+1]=temp;   
                }     
        for(i=0;itemp) 
            {    
               temp=right[i+1]; 
               sum++; 
            } 
            else  if(right[i+1]
#include
double x[1005],y[1005];
double left[1005],right[1005];
double r;
int n,flag,test;
int main()
{
 test=1;
 while(scanf("%d%lf",&n,&r)!=EOF&&(n||r))
 {
 
  int i,j,sum;
  double  temp;
  flag=0;
  sum=1;
  for(i=0;ir)
   {
       flag=1;
   }    
  }
  if(flag==1)
  {
   printf("Case %d: -1\n",test++);
   continue;
  } 
        for(i=0;ix[j+1]) 
                { 
                    temp=x[j]; 
                    x[j]=x[j+1]; 
                    x[j+1]=temp; 
                    temp=y[j]; 
                    y[j]=y[j+1]; 
                    y[j+1]=temp; 
                }   
     for(i=0;itemp)
      { 
      temp=right[i+1];
         sum++;
      }
      else  if(right[i+1]