曼哈顿距离与切比雪夫距离的转化.
将坐标系旋转 $\frac \pi 4$ ,每个点的坐标 $(x,y)$ 就变成了 $(x+y,x-y)$ .
此时原来的曼哈顿距离变成了切比雪夫距离 $\max(|x_1-x_2|,|y_1-y_2|)$ ,三个点形成正三角形需要满足
$$
\max(|x_1-x_2|,|y_1-y_2|)=\max(|x_1-x_3|,|y_1-y_3|)=\max(|x_2-x_3|,|y_2-y_3|)
$$
通过一定的观察可以发现,这三个点中存在两个点的 $x$ 相同,或存在两个点的 $y$ 相同.
证明:若 $x$ 均不相同,可以假定有 $x_1>x_2>x_3$ .
则 $x_1-x_3>x_1-x_2,x_1-x_3>x_2-x_3$ .可知 $|y_1-y_2|=|y_2-y_3|$ .
若 $y$ 也均不相同,则 $|y_1-y_3|>|y_1-y_2|$ ,而 $|x_1-x_3|>|x_1-x_2|$ ,对应 $\max$ 不可能相等.
先枚举两个 $x$ 相同的点 $(a,b),(a,c)$ ,满足 $b<c$ ,考虑计算有多少个点能和它们形成正三角形.
此时 $3$ 个 $\max$ 的值都是 $c-b$ ,可以得出另外一个点只可能是在 $x$ 距离差上取得 $\max$ .
即,统计满足 $x=a\pm(c-b),b\le y\le c$ 的 $(x,y)$ 的数目即可.
再枚举两个 $y$ 相同的点 $(b,a),(c,a)$ ,满足 $b<c$ ,同理计算贡献.
为了不与枚举 $x$ 时贡献重复,统计 $b<x<c,y=a\pm (c-b)$ 的 $(x,y)$ 的数目即可.
时间复杂度 $O(n^3)$ .
1 | //%std |