题目描述
给定平面的n个点(n<=1e5),所有坐标的绝对值在50000以内,现在问你有多少对点之间的距离不小于d。这里距离描述为两点的曼哈顿距离,即dist=|xi-xj|+|yi-yj|。
思路
如果将平面上小于等于d的曼哈顿距离画出来,会是一个菱形
切比雪夫距离:平面上两个点(x1,y1)(x2,y2)的切比雪夫距离为max(∣x1−x2∣,∣y1−y2∣),其中∣x∣为x的绝对值
将曼哈顿距离转换为切比雪夫距离后,我们发现切比雪夫距离固定的点呈正方形
这样我们就可以先将数据离线,按照yy的大小对点进行排序,然后用树状数组维护长度为dd的正方形区域内点的个数即可,这部分代码相对就比较模板了