zoukankan      html  css  js  c++  java
  • 2015北京网络赛A题The Cats' Feeding Spots

    题意:给你一百个点,找个以这些点为中心的最小的圆,使得这个圆恰好包含了n个点,而且这个圆的边界上并没有点

    解题思路:暴力枚举每个点,求出每个点到其他点的距离,取第n大的点,判断一下。

     1 #include<cstdio>
     2 #include<cmath>
     3 #include<algorithm>
     4 #include<iostream>
     5 #include<memory.h>
     6 using namespace std;
     7 const int MAXN=1000;
     8 const double eps=1e-8;
     9 const int inf=0x3f3f3f3f;
    10 
    11 struct point
    12 {
    13     double x,y;
    14 }node[110];
    15 
    16 int n,m,T;
    17 double d[110][110];
    18 
    19 double dis(point a,point b)
    20 {
    21     return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
    22 }
    23 
    24 int main()
    25 {
    26     scanf("%d",&T);
    27     while(T--)
    28     {
    29         scanf("%d%d",&m,&n);
    30         memset(d,0,sizeof(d));
    31         for(int i=0;i<m;i++)
    32         {
    33             scanf("%lf%lf",&node[i].x,&node[i].y);
    34         }
    35         if(n>m)
    36         {
    37             printf("-1
    ");
    38             continue;
    39         }
    40         int ans=inf;
    41         for(int i=0;i<m;i++)
    42         {
    43             for(int j=0;j<m;j++)
    44             {
    45                 d[i][j]=dis(node[i],node[j]);
    46             }
    47         }
    48         for(int i=0;i<m;i++)
    49         {
    50             sort(d[i],d[i]+m);
    51             int p=(int)ceil(d[i][n-1]+eps);
    52             if(d[i][n]-p>eps||n==m)
    53                 ans=min(ans,p);
    54         }
    55         if(ans==inf) ans=-1;
    56         printf("%d
    ",ans);
    57     }
    58     return 0;
    59 }
    View Code
  • 相关阅读:
    博客作业6
    博客作业5
    3137102127 林志坤(实验3)
    3137102127 林志坤(实验2)
    个人简介
    Bookstore项目测试缺陷报告
    自我介绍
    第6次博客园作业
    软件测试第6次作业
    《构建之法》心得体会
  • 原文地址:https://www.cnblogs.com/ITUPC/p/4854637.html
Copyright © 2011-2022 走看看