数对的最大曼哈顿距离[ABC178E] Dist Max

news/2024/11/1 5:03:42/

[ABC178E] Dist Max

题面翻译

给定平面上 N N N 个点,求出所有点对间的最大曼哈顿距离。

题目描述

二次元平面上に $ N $ 個の点があり、$ i $ 番目の点の座標は $ (x_i,y_i) $ です。 同じ座標に複数の点があることもあります。 異なる二点間のマンハッタン距離として考えられる最大の値はいくつでしょうか。

ただし、二点 $ (x_i,y_i) $ と $ (x_j,y_j) $ のマンハッタン距離は $ |x_i-x_j|+|y_i-y_j| $ のことをいいます。

输入格式

入力は以下の形式で標準入力から与えられる。

$ N $ $ x_1 $ $ y_1 $ $ x_2 $ $ y_2 $ $ : $ $ x_N $ $ y_N $

输出格式

答えを出力せよ。

样例 #1

样例输入 #1

3
1 1
2 4
3 2

样例输出 #1

4

样例 #2

样例输入 #2

2
1 1
1 1

样例输出 #2

0

提示

制約

  • $ 2\ \leq\ N\ \leq\ 2\ \times\ 10^5 $
  • $ 1\ \leq\ x_i,y_i\ \leq\ 10^9 $
  • 入力はすべて整数

Sample Explanation 1

$ 1 $ 番目の点と $ 2 $ 番目の点のマンハッタン距離は $ |1-2|+|1-4|=4 $ で、これが最大です。

思路:要 求两数对之间的曼哈顿距离,我们应该知道曼哈顿距离的公式为|xi - xj| + |yi - yj| , 分四种情况讨论后最后可以求得我们只用考虑两种情况:

在这里插入图片描述

AC代码:

#include<bits/stdc++.h>
using namespace std;
const int N = 2e6 + 10;
const int M = 1e9 + 7;
const int MOD = 998244353;
typedef long long ll;
typedef pair<ll,ll>PII;
typedef pair<double, double>PDD;int dx[] = {1, 1, -1, -1, 2, 2, -2, -2};
int dy[] = {2, -2, 2, -2, 1, -1, 1, -1};//曼哈顿距离化简绝对值之后最终可以化简为两种取最大的即可
PII p[N];
bool cmp1(PII a, PII b)
{return a.first + a.second < b.first + b.second;
}
bool cmp2(PII a, PII b)
{return a.first - a.second < b.first - b.second;
}
int main()
{int n;cin >> n;for(int i = 1; i <= n; i ++){cin >> p[i].first >> p[i].second;}sort(p + 1, p + 1 + n, cmp1);ll res = abs(p[n].second  + p[n].first) - abs(p[1].first + p[1].second);sort(p + 1, p + 1 + n, cmp2);res = max(res, abs(p[n].first - p[n].second - (p[1].first - p[1].second)));cout << res << endl;return 0;
}

http://www.ppmy.cn/news/1543497.html

相关文章

[前端面试]计算机网络

TCP/IP 与OSI TCP/IP TCP/IP 四层模型是一个分层网络通信模型&#xff0c; 它将网络通信过程分为四个层次&#xff0c;这四层分别是&#xff1a;网络接口层、互联网层、传输层和应用层。 网络接口层负责在计算机和网络硬件之间传输数据&#xff0c;负责在物理网络上发送和接…

ubuntu用户账号相关操作

用户账号相关 查看当前登录用户 可以使用 who 或 w 命令来查看当前登录到系统的用户。这些命令会列出当前登录用户的用户名以及登录的时间和终端信息。以下是示例&#xff1a; who或者 w这些命令的输出可能会像这样&#xff1a; user1 pts/0 2024-04-20 09:30 (:0) user…

git add你真的用明白了吗?你还在无脑git add .?进入暂存区啥意思?

git add 命令用于将文件的改动添加到暂存区&#xff08;staging area&#xff09;&#xff0c;为下一次提交做好准备。简单来说&#xff0c;它标记了哪些文件或改动会被纳入下次 git commit 中。以下是 git add 的作用和使用场景&#xff1a; 1. 作用 git add 将指定文件或文…

贪心算法入门(一)

1.什么是贪心算法&#xff1f; 贪心算法是一种解决问题的策略&#xff0c;它将复杂的问题分解为若干个步骤&#xff0c;并在每一步都选择当前最优的解决方案&#xff0c;最终希望能得到全局最优解。这种策略的核心在于“最优”二字&#xff0c;意味着我们追求的是以最少的时间和…

pgSQL中对json数组中的一个元素中的字段进行条件查询

pgSQL中的jsonb是用来存储json字段的一个数据类型 然鹅有些时候&#xff0c;如果我们需要对json数组中的一个元素中的字段进行条件查询&#xff0c;这个时候应该怎么办&#xff1f; {list: [{field:1},{field:2} ] }例如上例&#xff1a;我想要查询表中所有记录下&…

Java项目实战II基于微信小程序的马拉松报名系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 马拉松运动…

基于优先级的 TODO 列表

1. 具有优先级的待办事项列表 在这个项目中&#xff0c;我开发了一个具有优先级的待办事项列表&#xff0c;使用 React 作为前端&#xff0c;使用 Tailwind CSS 进行样式设置&#xff0c;使用 Shadcn UI 来增强 UI 组件。 方法 1 - 使用表格 用户可以使用表单添加任务及其详…

Java学习Day57:碧水金睛兽!(Spring Cloud微服务1.0)

1.微服务入门 (1).单体架构与分布式架构 单体架构&#xff1a; 将业务的所有功能集中在一个项目中开发&#xff0c;打成一个包部署优点&#xff1a; 架构简单、部署成本低 &#xff1b; 缺点&#xff1a; 耦合度高项目打包部署到Tomcat&#xff0c;用户直接访问。用户量增加后…