题意: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 }