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;
}

 

posted @ 2020-10-04 21:49  ~zcb  阅读(112)  评论(0编辑  收藏  举报