n个5维坐标的点,求这n个点中曼哈顿距离的最大值。
暴力枚举肯定超时。
只考虑二维空间上两个坐标之间的曼哈顿距离(x1, y1) 和 (x2, y2),|x1-x2| +|y1-y2|去掉绝对值符号后共有下列四种情况
(x1-x2) + (y1-y2), (x1-x2) + (y2-y1), (x2-x1) + (y1-y2), (x2-x1) + (y2-y1)
转化一下:
(x1+y1) - (x2+y2), (x1-y1) - (x2-y2), (-x1+y1) - (-x2+y2), (-x1-y1) - (-x2-y2)
显然,任意给两个点,我们分别计算上述四种情况,那么最大值就是曼哈顿距离。
转化后,“-”号两侧的坐标形式是一样的。维数为5,因此我们可以用二进制枚举。
最大曼哈顿距离 = max{每种情况下的最大值-最小值}
#incl