首页 > 其他分享 >切比雪夫距离

切比雪夫距离

时间:2023-08-23 22:24:13浏览次数:32  
标签:10 le frac 曼哈顿 比雪夫 距离

定义

设二维平面中的两点 \(A(x_1,y_1)\),\(B(x_2,y_2)\),定义它们之间的切比雪夫距离为

\[d(A,B)=\max\{|x_1-x_2|,|y_1-y_2|\} \]

切比雪夫距离与曼哈顿距离

思考一下两者的联系。

\(A\) 和 \(B\) 的曼哈顿距离:

\[d(A,B)=|x_1-x_2|+|y_1+y_2| \]

\[=\max\{x_1-x_2+y_1-y_2,x_1-x_2+y_2-y_1,x_2-x_1+y_1-y_2,x_2-x_1+y_2-y_1\} \]

\[=\max\{|(x_1+y_1)-(x_2+y_2)|,|(x_1-y_1)-(x_2-y_2)|\} \]

这是 \((x_1+y_1,x_1-y_1)\) 和 \((x_2+y_2,x_2-y_2)\) 的切比雪夫距离。

这说明切比雪夫坐标系是由曼哈顿坐标系旋转 \(45^{\circ}\) 后放大一倍得到的。同理:

  • 曼哈顿坐标系是通过切比雪夫坐标系旋转 \(45^\circ\) 后再缩小为一半得到的。

\(A\) 和 \(B\) 的切比雪夫距离:

\[d(A,B)=\max\{|x_1-x_2|,|y_1-y_2|\} \]

\[=|\frac{x_1+y_1}{2}-\frac{x_2+y_2}{2}|+|\frac{x_1-y_1}{2}-\frac{x_2-y_2}{2}| \]

上面这个式子的正确性值得思考一下。

这是 \((\frac{x_1+y_1}{2},\frac{x_1-y_1}{2})\) 和 \((\frac{x_2+y_2}{2},\frac{x_2-y_2}{2})\) 的曼哈顿距离。

两者的相互转化

  • 曼哈顿距离 \(\rightarrow\) 切比雪夫距离:\((x,y)\rightarrow(x+y,x-y)\)

  • 切比雪夫距离 \(\rightarrow\) 曼哈顿距离:\((x,y)\rightarrow(\frac{x+y}{2},\frac{x-y}{2})\)

可惜的是在 \(D\ge 3\) 的时候切比雪夫距离不能转化为曼哈顿距离。


题目

P4648 [IOI2007] pairs 动物对数

给定 \(B\) 维曼哈顿坐标系上的 \(n\) 个整点,问满足 \(i<j,dis(i,j)\le D\) 的 \((i,j)\) 总数。

\(1\le B\le 3\),\(n\le 10^5\),\(D\le 10^8\).

保证点的坐标为正整数。记 \(m\) 为最大的坐标值。

  • \(B=1\),\(m\le 7.5\times 10^7\).

  • \(B=2\),\(m\le 7.5\times 10^4\).

  • \(B=3\),\(m\le 75\).

\(B=1\)

双指针维护一下即可。时间复杂度 \(O(n)\).

\(B=2\)

先曼转切,令 \((x,y)\leftarrow(x+y,x-y)\).

直观的来说就是对每个 \((x,y)\) 求左上角为 \((x-D,y-D)\),右下角为 \((x+D,y+D)\) 的子矩阵和 \(-1\).

以 \(x\) 为关键字排序,记录双指针 \(i,j\),用树状数组维护。

偏移量设为 \(m\) 即可。时间复杂度 \(O(n\log m)\).

\(B=3\)

曼哈顿坐标系上的点可以转化为一个四元组,但是写起来太麻烦了。

不妨对 \(m=75\) 这个限制做一些暴力。

对 \((x,y,z)\) 的前二维曼转切,视为 \(z\) 平面上的点。

对于每个点 \((x_i,y_i,z_i)\),枚举另一个点的 \(z_j\),即求 \(z_j\) 平面上,左上角为 \((x_i-l,y_i-l)\),右下角为 \((x_i+l,y_i+l)\) 的子矩阵和 \(-[z_i=z_j]\).

对每个平面计算其二维前缀和,时间复杂度 \(O(m^3+nm)\).

此时计算的点对总数应 \(/2\).

record


P3964 [TJOI2013] 松鼠聚会

给出切比雪夫坐标系上的 \(n\) 个整点,找到一个点满足其与其他点的总距离最小,输出这个值。

\(n\le 10^5\),\(|x|,|y|\le 10^9\).

切转曼,对于点 \(j\),求和式即

\[\sum_{i=1}^{n}|x_i-x_j|+|y_i-y_j| \]

只考虑 \(x\),可以拆成

\[\sum_{i=1}^{j}(x_j-x_i)+\sum_{i=j+1}^{n}(x_i-x_j) \]

容易发现就是前缀和。时间复杂度 \(O(n\log n)\).

record

标签:10,le,frac,曼哈顿,比雪夫,距离
From: https://www.cnblogs.com/SError0819/p/17652910.html

相关文章

  • 相似性-距离方法一览
    相似性计算指的是度量两个对象之间相似程度的过程,而距离计算则是度量两个对象之间距离的过程。在某些情况下,它们是等价的,例如当距离越小表示两个对象越相似时,这时候可以将距离计算视为相似性计算的一种形式。然而,在一些情况下,相似性计算和距离计算是不同的。例如,当度量两个对象之......
  • 树距离
    树距离类似题题意对于一个\(N\)个节点,\(N−1\)条无向边组成的树,我们规定两点之间的距离\(dis(u,v)\)为两点唯一简单路径上的最小边权。给定树的结构,对于树上每一个节点\(1\lei\leN\),请计算出。特别的,我们定义\(dis(i,i)=0\)。思路并查集,然后用于类似题相同的思路......
  • Leetcode 849. 到最近的人的最大距离
    题目描述给你一个数组seats表示一排座位,其中seats[i]=1代表有人坐在第i个座位上,seats[i]=0代表座位i上是空的(下标从0开始)。至少有一个空座位,且至少有一人已经坐在座位上。亚历克斯希望坐在一个能够使他与离他最近的人之间的距离达到最大化的座位上。返回他到离......
  • 数学——点到线段的最短距离
    点到线段最短距离的运算与点到直线的最短距离的运算二者之间存在一定的差别,即求点到线段最短距离时需要考虑参考点在沿线段方向的投影点是否在线段上,若在线段上才可采用点到直线距离公式。通俗的说,我们按照求点到直线的距离作垂线后,交点不一定在线段上。如图\(1\)所示。通常......
  • 为啥网线都会限制传输距离为100米?
    下午好,我的网工朋友。大部分网工都经历过网络布线这件事儿吧。无论是五类双绞线,还是六类双绞线,传输距离都是100米。而且,在综合布线规范中,水平布线不能超过90米,链路总长度不能超过100米。换句话说,“100米”是有线以太网布线的一个极限。这个说法到底怎么来的,有啥依据,具体施工现场怎......
  • 高斯白噪声下雷达测量精度---------距离精度公式详细推导
    一、背景前面写的一篇博客毫米波雷达入门知识里面介绍了距离精度、速度精度和角度精度。并给出了一个简单公式来说明哪些因素影响它们的大小。但具体怎么得到的并未说明,正好前两天在《现代雷达系统分析和设计》这本书上有看见相关内容,就趁着周末,再加上光明区的这个图书馆这么......
  • *【学习笔记】(23) 常用距离算法详解
    本文主要讲述这三种常见距离算法:欧氏距离,曼哈顿距离,切比雪夫距离。1.欧氏距离欧氏距离是最易于理解的一种距离算法。在数学的平面直角坐标系中,设点\(A,B\)的坐标分别为\(A(x_1,y_1),B(x_2,y_2)\),求点\(A,B\)之间的距离,我们一般会使用如下公式:\[\left|AB\right|=......
  • 8.18-零件出图(水路出图-线割出图)-顶出距离=产品最深胶位+15 ( 相加不满20设置为20 )
    上下顺序是:零件出图-水路出图-线割出图  ......
  • Java计算两点间的距离
    publicclassPointUtils{publicstaticvoidmain(String[]args){BigDecimalx1=newBigDecimal("0");BigDecimaly1=newBigDecimal("0");BigDecimalx2=newBigDecimal("-1");BigDecimal......
  • 两条直线轮廓的距离
    1dev_close_window()2read_image(Image,'测量/0.bmp')3get_image_size(Image,Width,Height)4dev_open_window(0,0,Width,Height,'black',WindowHandle)56dev_display(Image)78*绘制直线9draw_line(WindowHan......