vijos1453曼哈頓距離

2022-08-20 06:21:11 字數 2033 閱讀 4814

給出n個d維空間的點。求出曼哈頓距離最大的兩個點的

曼哈頓距離。兩個點(x1, x2...xd)、(x1,x2..xd)的曼哈頓距

離被定義為|x1-x1|+|x2-x2|+...+|xd-xd|.

第一行兩個正整數n,d。

接下來有n,每行描述乙個點的座標。

在第一行輸出曼哈頓距離最大的兩個點的曼哈頓距離。

4 22 1

1 44 5

5 31s

在60%的資料中,1<=n<=100000,1<=d<=2

在100%的資料中,1<=n<=100000,1<=d<=5

cqf為noip2009出的練習題

一道很好的數學題。

曼哈頓距離的定義為|x1-x1|+|x2-x2|+...+|xd-xd|;

我們觀察一下一維的,最大的x減最小的x。

順著這個思路我們看看二維x1+x2最大-(x1+x2)最小可以麼,

不幸的是不行,

反例:4 2

2 2-1 -1

-2 2

2 -2

但反例告訴了我們一些有意思的東西,答案為-(x1-x1)+(x2-x2)

我們嘗試把絕對值去掉,

考慮兩個點xi,yi,xj,yj

其曼哈頓距離為|xi-xj|+|yi-yj|

得到四個式子

xi-xj+yi-yj

xj-xi+yi-yj

xi-xj+yj-yi

xj-xi+yj-yi

最大值不就在其中嗎,並且錯誤的除去絕對值不會超過原有的答案(原來正的變負的了)。

因此,把乙個曼哈頓距離公式中的所有絕對值去除,每個點得到2^k個一維座標,距離最大是不會變的。

1 #include2 #include3 #include4 #include5 #include6 #include7 #include8

using

namespace

std;

9 typedef long

long

ll;10 typedef long

double

ld;11 typedef pairpr;

12const

double pi=acos(-1

);13

#define rep(i,a,n) for(int i=a;i<=n;i++)

14#define per(i,n,a) for(int i=n;i>=a;i--)

15#define rep(i,u) for(int i=head[u];i;i=next[i])

16#define clr(a) memset(a,0,sizeof(a))

17#define pb push_back

18#define mp make_pair

19#define fi first

20#define sc second

21#define pq priority_queue

22#define pqb priority_queue , less>

23#define pqs priority_queue , greater>

24#define vec vector

25 ld eps=1e-9

;26 ll pp=1000000007

;27 ll mo(ll a,ll pp)

28 ll powmod(ll a,ll b,ll pp)

29void fre()

30//

void add(int x,int y,int z)

31int dx[5]=,dy[5]=;

32 ll read()

37int a[100005][10

];38

intmain()

3954 ans=max(ans,max-min);55}

56 printf("

%d\n

",ans);

57return0;

58 }

view code

vijos1453 曼哈頓距離

給出n個d維空間的點。求出曼哈頓距離最大的兩個點的曼哈頓距離。兩個點 x1,x2,xd x1,x2,xd 的曼哈頓距離為 x1 x1 x2 x2 xd xd 第一行兩個整數n,d 1曼哈頓距離最大的兩個點的曼哈頓距離。4 2 2 11 4 4 55 36資料規模 60 資料,1 n 1000000,...

曼哈頓距離

切雪兒距離距離是什麼?走過象棋的人就知道。這個距離其實就是max x i x j y i y j 就是兩個點之間的垂直距離和水平距離之間的最大的那個 這個就是象棋裡邊的國王和王后走的最短路 還有乙個歐式距離,別人稱之為歐幾里得距離,也就是我們初中高中學習的兩點之間的直線距離,sqrt x1 y1 2...

曼哈頓距離

題目 description 給出n個d維空間的點。求出曼哈頓距離最大的兩個點的曼哈頓距離。兩個點 x1,x2,xd x1,x2,xd 的曼哈頓距離為 x1 x1 x2 x2 xd xd input 第一行兩個整數n,d 1output 曼哈頓距離最大的兩個點的曼哈頓距離。dfs 位運算 公式推導 ...