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

前言

之前在杂谈更过一篇曼哈顿距离的题,昨天的abcE考到了切比雪夫距离。这两个关系比较密切,总结一些

基本性质

曼哈顿距离

两点横轴坐标差的绝对值和 ∣ x 2 − x 1 ∣ + ∣ y 2 − y 1 ∣ |x_2-x_1| + |y_2-y_1| x2x1+y2y1

应用在网格图最短路(只能上下左右移动)

切比雪夫距离

两点横轴坐标差的绝对值的最小值 m i n ( ∣ x 2 − x 1 ∣ , ∣ y 2 − y 1 ∣ ) min(|x_2-x_1|,|y_2-y_1|) min(x2x1,y2y1)

应用在棋盘图(8个方向移动)

如果只能向4个方向移动,可以看下面的进阶

推论

常用距离算法详解 - 洛谷专栏 (luogu.com)

给出 曼哈顿 意义下的坐标 (𝑥,𝑦),可转化成 切比雪夫 意义下的坐标 (𝑥+𝑦,𝑥−𝑦)。

反过来,我们也能通过 切比雪夫 意义下的坐标 (𝑥,𝑦) 转化为 曼哈顿 意义下的 ( x + y 2 , x − y 2 ) (\frac{x+y}{2},\frac{x-y}{2}) (2x+y,2xy)
求曼哈顿距离可以转换为max(abs(x1 + y1 - x2 - y2,) abs(x1 - y1 - x2 + y2))也就是切比雪夫距离,预处理出所有x+y和x-y,直接max(最大的x+y - 最小的x+y, 最大的x-y - 最小的x-y)就可以得到最大曼哈顿距离了

这题比较进阶,稍微变式(奇偶性分组)

E - Jump Distance Sum (atcoder.jp)

#include<bits/stdc++.h>
#define endl '\n'
using ll = long long;
using namespace std;

int main(){
    ll n;
    cin>>n;
    vector<ll>v[4];
    for(int i = 0; i < n; i++){
        ll a,b; 
        cin>>a>>b;
        if((a+b) % 2){
            v[0].push_back(a+b);
            v[1].push_back(a-b);
        }else{
            v[2].push_back(a+b);
            v[3].push_back(a-b);
        }
    }
    ll ans = 0;
    for(int i = 0; i < 4; i++){
        sort(v[i].begin(), v[i].end());
        int sz = v[i].size();
        for(int j = 0; j < sz; j++){
            ans += v[i][j] * (2 * j + 1 - sz);
        }
    }
    cout<<ans/2<<endl;
    return 0;
}

相关推荐

  1. 曼哈顿距离距离

    2024-07-23 06:20:05       16 阅读
  2. 算法 {曼哈顿距离,距离}

    2024-07-23 06:20:05       22 阅读
  3. 滤波器

    2024-07-23 06:20:05       131 阅读
  4. 3102.最小化曼哈顿距离

    2024-07-23 06:20:05       23 阅读
  5. 3102. 最小化曼哈顿距离

    2024-07-23 06:20:05       19 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-23 06:20:05       50 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-23 06:20:05       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-23 06:20:05       43 阅读
  4. Python语言-面向对象

    2024-07-23 06:20:05       54 阅读

热门阅读

  1. 技术文档总结----思维导图

    2024-07-23 06:20:05       16 阅读
  2. C语言强化-1.数据结构概述

    2024-07-23 06:20:05       14 阅读
  3. 【Go程序】爬虫获取豆瓣Top250

    2024-07-23 06:20:05       14 阅读
  4. python入门课程Pro(2)--循环

    2024-07-23 06:20:05       13 阅读
  5. 深入剖析Tomcat整体架构

    2024-07-23 06:20:05       14 阅读
  6. CCF GESP Python编程 二级认证真题 2024年6月

    2024-07-23 06:20:05       17 阅读
  7. Android5.1 NAT功能的iptables规则

    2024-07-23 06:20:05       16 阅读
  8. C语言-预处理详解

    2024-07-23 06:20:05       18 阅读
  9. ios CCUIHilightedLabel.m

    2024-07-23 06:20:05       15 阅读
  10. 动态内存管理

    2024-07-23 06:20:05       9 阅读