P5098 [USACO04OPEN]Cave Cows 3
题目链接:https://www.luogu.com.cn/problem/P5098
思路:曼哈顿距离为abs(x1-x2)+abs(y1-y2),直接暴力是肯定不行的,可以化简一下,先假设x1>=x2。
当y1>=y2时,abs(x1-x2)+abs(y1-y2)=x1-x2+y1-y2=(x1+y1)-(x2+y2)。
但y1<y2时, abs(x1-x2)+abs(y1-y2)=x1-x2+y2-y1=(x1-y1)-(x2-y2)。
所以只要求max(x+y)-min(x+y)和max(x-y)和min(x-y)就行了。
#include<bits/stdc++.h> using namespace std; typedef long long ll; int ma=2000006; int mi=-2000006; int main() { int n; cin>>n; int sum1=ma,sum2=mi,sum3=ma,sum4=mi; for(int i=1;i<=n;i++) { int x,y; cin>>x>>y; sum1=min(sum1,x+y); sum2=max(sum2,x+y); sum3=min(sum3,x-y); sum4=max(sum4,x-y); } cout<<max(sum2-sum1,sum4-sum3)<<endl; }