P3382: [Usaco2004 Open]Cave Cows 3 洞穴里的牛之三
首先,我们先确定,最长的曼哈顿距离只可能为 x1+y2-(x2+y2) 和 x1-y1-(x2-y2) 所以我们只需要维护四个值,
分别代表 max(x+y) ; max(x-y) ; min(x+y) ; min(x-y) ;
因此答案也就是 max(max(x+y)-min(x+y),max(x-y)-min(x-y))。
1 const maxn=3000000;
2 var maxadd,minadd,maxdec,mindec,i,a,b,n:longint;
3 function max(a,b:longint):longint;
4 begin
5 if a>b then exit(a)
6 else exit(b);
7 end;
8 function min(a,b:longint):longint;
9 begin
10 if a<b then exit(a)
11 else exit(b);
12 end;
13 begin
14 minadd:=maxn; mindec:=maxn;
15 readln(n);
16 for i:=1 to n do
17 begin
18 readln(a,b);
19 maxadd:=max(maxadd,a+b);
20 minadd:=min(minadd,a+b);
21 maxdec:=max(maxdec,a-b);
22 mindec:=min(mindec,a-b);
23 end;
24 writeln(max(maxadd-minadd,maxdec-mindec));
25 end.
(转载请注明出处:http://www.cnblogs.com/Kalenda/)