POJ 2059

题意:s*s的正方形上有n个点,求一个圆将它们覆盖但不超出正方形,要求圆的x坐标尽可能小,其次y坐标尽可能小。

题解:数据范围太小,直接暴力。

View Code
 1 #include<cstdio>

 2 #include<cstring>

 3 #include<algorithm>

 4 using namespace std;

 5 int po[60][2];

 6 int s,n;

 7 bool solve(int x,int y)

 8 {

 9     int len=min(min(x,y),min(s-x,s-y));

10     len=len*len;

11     for(int i=0;i<n;i++)

12     {

13         int xx=po[i][0],yy=po[i][1];

14         if((xx==x&&yy==y)||((xx-x)*(xx-x)+(yy-y)*(yy-y))>len)

15             return false;

16     }

17     return true;

18 }

19 int main()

20 {

21     int T;

22     for(scanf("%d",&T);T;T--)

23     {

24         scanf("%d%d",&s,&n);

25         for(int i=0;i<n;i++)

26             scanf("%d%d",&po[i][0],&po[i][1]);

27         bool flag=false;

28         for(int x=1;x<s;x++)

29         {

30             for(int y=1;y<s;y++)

31             {

32                 if(solve(x,y))

33                 {

34                     flag=true;

35                     printf("%d %d\n",x,y);

36                     x=y=s;

37                 }

38             }

39         }

40         if(!flag)

41             printf("poodle\n");

42     }

43     return 0;

44 }

你可能感兴趣的:(poj)