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 4
Sample Output
YES NO问是否有相同的曼哈顿距离,M<=1e5,所以根据抽屉原理就可以知道,如果全部的边数大于2*M-2,那肯定有相同的啊,不然的话就暴力好了#include<set> #include<map> #include<cmath> #include<stack> #include<queue> #include<bitset> #include<cstdio> #include<string> #include<cstring> #include<iostream> #include<algorithm> #include<functional> #define rep(i,j,k) for (int i = j; i <= k; i++) #define per(i,j,k) for (int i = j; i >= k; i--) using namespace std; typedef long long LL; const int low(int x) { return x&-x; } const int mod = 1e9 + 7; const int N = 1e5 + 10; const int INF = 0x7FFFFFFF; int T, n, m, f[N * 2]; int x[N], y[N]; int main() { scanf("%d", &T); while (T--) { scanf("%d%d", &n, &m); rep(i, 1, n) scanf("%d%d", &x[i], &y[i]); if (1LL * n*(n - 1) / 2 > 2 * m) printf("YES\n"); else { int flag = 0; rep(i, 1, 2 * m) f[i] = 0; rep(i, 1, n) { rep(j, i + 1, n) { if (f[abs(x[i] - x[j]) + abs(y[i] - y[j])]) flag = 1; else f[abs(x[i] - x[j]) + abs(y[i] - y[j])] = 1; if (flag) break; } if (flag) break; } printf("%s\n", flag ? "YES" : "NO"); } } return 0; }