emmm......
我上小学开始就不打小报告了
emmm......
话太多就变菜了
1 #include<bits/stdc++.h> 2 #define cl(a,b) memset(a,b,sizeof(a)) 3 #define debug(a) cerr<<#a<<"=="<<a<<endl 4 using namespace std; 5 typedef long long ll; 6 typedef pair<int,int> pii; 7 8 const int maxn=50+10; 9 const double r=5.0*sqrt(3.0); 10 11 struct point 12 { 13 double x,y; 14 }; 15 16 point p[maxn][maxn]; 17 18 void init() 19 { 20 p[10][10]= {0,0}; 21 for(int i=1; i<=10; i++) 22 { 23 p[i+10][10].x=p[i+9][10].x+r; 24 p[i+10][10].y=0; 25 p[-i+10][10].x=p[-i+11][10].x-r; 26 p[-i+10][10].y=0; 27 } 28 double tmpx=r/2.0,tmpy=15.0/2.0; 29 for(int i=-9; i<=10; i++) 30 { 31 for(int j=1; j<=10; j++) 32 { 33 p[i+10][j+10].x=p[i+10][j+9].x+tmpx; 34 p[i+10][j+10].y=p[i+10][j+9].y+tmpy; 35 p[i+10][-j+10].x=p[i+10][-j+11].x-tmpx; 36 p[i+10][-j+10].y=p[i+10][-j+11].y-tmpy; 37 } 38 } 39 } 40 41 double dis(point a,point b) 42 { 43 return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)); 44 } 45 46 point Search(point now) 47 { 48 double ans=100000; 49 point res; 50 for(int i=-9; i<=10; i++) 51 { 52 for(int j=-9; j<=10; j++) 53 { 54 if(ans>dis(now,p[i+10][j+10])) 55 { 56 res.x=i,res.y=j; 57 ans=dis(now,p[i+10][j+10]); 58 } 59 } 60 } 61 return res; 62 } 63 64 int main() 65 { 66 init(); 67 int T=10; 68 while(T--) 69 { 70 point now; 71 scanf("%lf%lf",&now.x,&now.y); 72 point ans=Search(now); 73 printf("[%d,%d]",(int)ans.x,(int)ans.y); 74 if(T) printf(", "); 75 else printf("\n"); 76 } 77 return 0; 78 }/* 79 80 1 0 81 0 15 82 2 0 83 13 7 84 5 5 85 10 15 86 25 15 87 -13 -8 88 12 -7 89 -10 0 90 91 */
时间: 2024-10-12 00:27:52