内含高维曼哈顿-切比雪夫转换。
定义
曼哈顿距离:∣x1−x2∣+∣y1−y2∣
切比雪夫距离:max(∣x1−x2∣,∣y1−y2∣)
更多距离
欧几里得距离:(x1−x2)2+(y1−y2)2
Lm 距离:(∣x1−x2∣m+∣y1−y2∣m)m1
n 维欧几里得距离:∑i=1n(di1−di2)2
n 维曼哈顿距离:∑i=1n∣di1−di2∣
n 维切比雪夫:maxi=1n∣di1−di2∣
转换
曼哈顿转切比雪夫:(x,y)→(x+y,x−y)
切比雪夫转曼哈顿:(x,y)→(2x+y,2x−y)
证明
证明可以用几何,因为曼哈顿坐标系是通过切比雪夫坐标系旋转 45∘ 后,再缩小到原来的一半得到的。
或者纯代数,x≤y 时 ∣x−y∣=x−y,x<y 时 ∣x−y∣>x−y,转换成 (x+y,x−y) 之后 max(∣x1−x2∣,∣y1−y2∣) 一定是原来的 ∣x1−x2∣+∣y1−y2∣ 都取到绝对值的时候,也就是曼哈顿距离,而 max(∣x1−x2∣,∣y1−y2∣) 就是切比雪夫距离。
其实是转换成 (x,y),(−x,y),(x,−y),(−x,−y),因为切比雪夫本身有绝对值所以正负效果是一样的,去掉重复一半的就是上面的式子。
切比雪夫转曼哈顿其实就是解 {x+y=ax−y=b 的方程。
高维切比雪夫和曼哈顿
通过上面的证明可以得到,k 维曼哈顿可以转换为 2k−1 维的切比雪夫。
也就是指定每一位取正还是取负,在去掉重复的 21。
但是高维切比雪夫却不一定都能转换为曼哈顿,因为本质这个转换是解方程,拿四维切比雪夫 (a,b,c,d) 举例
⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧x+y+z=a−x+y+z=bx−y+z=cx+y−z=d
这个方程需要满足 a=b+c+d 才能有解,有解情况下
⎩⎪⎪⎨⎪⎪⎧x=2a−by=2a−cz=2a−d
而切比雪夫不是 2k 维的情况下我们可以升维成 2k 维,这个时候补 0 也有可能使得方程一定有解。
比如求
i=1∑nj=1∑i−1max(ai−aj,bi−bj,ci−cj)−min(ai−aj,bi−bj,ci−cj)
可以直接 min-max 容斥,但是跑的慢
推式子
==max(ai−aj,bi−bj,ci−cj)−min(ai−aj,bi−bj,ci−cj)max(∣bi−bj−(ai−aj)∣,∣ci−cj−(bi−bj)∣,∣ai−aj−(ci−cj)∣)max(∣(bi−aj)+(bj−aj)∣,∣(ci−bi)+(cj−bj)∣,∣(ai−ci)+(aj−cj∣))
这明显是一个三维切比雪夫,给他升成四维,令 a=0,刚好满足 a=b+c+d,所以原式为
21i=1∑nj=1∑i−1∣bi−ai∣+∣ci−bi∣+∣ai−ci∣
这个直接排序就能求了。
补充
其实不把重复的去掉,保留 2k 维,这样就不用取 abs 了,能有比切比雪夫更好的性质。