Teacher Bo
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=5762
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".
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).
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
Source
2016 Multi-University Training Contest 3
##题意: 给出平面上的N个点,求是否一个四元组(A,B,C,D)满足AB之间的曼哈顿距离等于CD之间距离. 条件(A
##题解: 这个题让我懵比的两个小时... 一开始先把曼哈顿距离想成了abs(dx+dy),然后可以只考虑每个点的坐标和,从而误把题目转化为求一个数组中是否有两对数的和相等. 由于规模是1e5,然后一直在想O(nlogn)的算法...
首先,曼哈顿距离的正确定义是abs(dx)+abs(dy). 其次,题目的数据规模确实不能跑O(n^2)的算法,但是题目限制了坐标的范围为[0,1e5], 这意味着任意两点的曼哈顿距离只可能有2e5种可能,暴力最多只会判断2e5个组合,所以不会超时. 所以直接暴力判断所有组合即可,当出现重复的距离时停止判断(先离线数据).
这个题懵比这么久真的是非常不应该,所以以后卡题的时候,一定要重新读题和尝试转换思考角度.
##代码: ``` cpp #include