Teacher Bo
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 384 Accepted Submission(s): 219
Problem Description
Teacher BoBo is a geography teacher in the school.One day in his class,he marked
N
points in the map,the
i
-th point is at
(Xi,Yi)
.He wonders,whether there is a tetrad
(A,B,C,D)(A<B,C<D,A≠CorB≠D)
such that the manhattan distance between A and B is equal to the manhattan distance between C and D.
If there exists such tetrad,print "YES",else print "NO".
If there exists such tetrad,print "YES",else print "NO".
Input
First line, an integer
T
. There are
T
test cases.
(T≤50)
In each test case,the first line contains two intergers, N, M, means the number of points and the range of the coordinates. (N,M≤105) .
Next N lines, the i -th line shows the coordinate of the i -th point. (Xi,Yi)(0≤Xi,Yi≤M) .
In each test case,the first line contains two intergers, N, M, means the number of points and the range of the coordinates. (N,M≤105) .
Next N lines, the i -th line shows the coordinate of the i -th point. (Xi,Yi)(0≤Xi,Yi≤M) .
Output
T
lines, each line is "YES" or "NO".
Sample Input
2 3 10 1 1 2 2 3 3 4 10 8 8 2 3 3 3 4 4Sample OutputYES NO曼哈顿距离:是|x2-x1|+|y2-y1|#include<stdio.h> #include<math.h> #include<string.h> #include<algorithm> using namespace std; int a[100001],b[100001]; int s[200000]= {0}; int main() { int t; scanf("%d",&t); while(t--) { memset(s,0,sizeof(s)); int n,m; scanf("%d%d",&n,&m); for(int i=0; i<n; i++) { scanf("%d%d",&a[i],&b[i]); } if(n>m) { printf("YES\n"); } else { int f=0; int p=0; int h=0; for(int i=0; i<n; i++) { for(int j=i+1; j<n; j++) { h++; int t,k,ni; t=(a[j]-a[i]); k=(b[j]-b[i]); if(t<0) { t=-t; } if(k<0) { k=-k; } ni=k+t; s[ni]++; if(s[ni]>=2)//有两个相等的就可以输出yes了 { f=1; break; } } if(f==1) { break; } } if(f==1) printf("YES\n"); else printf("NO\n"); } }
}