老oj曼哈頓最小生成樹

2022-06-03 11:36:14 字數 1470 閱讀 6778

description

平面座標系xoy內,給定n個頂點v = (x , y)。對於頂點u、v,u與v之間的距離d定義為|xu – xv| + |yu – yv|

你的任務就是求出這n個頂點的最小生成樹。

input

第一行乙個正整數n,表示定點個數。

接下來n行每行兩個正整數x、y,描述乙個頂點。

output

只有一行,為最小生成樹的邊的距離和。

sample input

4

1 00 1

0 -1

-1 0

sample output

6

[資料約定]

對於30%的資料n <= 2000;

對於50%的資料n <= 5000;

對於100%的資料n <= 50000;

0 <= x, y <= 100000。

題解:code:

1 #include2 #include3 #include4 #include5 #include6

#define maxn 50005

7#define inf 1061109567

8using

namespace

std;

9char

ch;10

bool

ok;11

void read(int &x)

16int n,m,ans=0;17

struct

pointpoint[maxn],tmp[maxn];

20bool

cmp1(point a,point b)

24int calc(point a,point b)

25struct

edgeedge[maxn<<2

];28

bool cmp2(edge a,edge b)

29int

cntd,d[maxn];

30struct

data

33void update(data b)

34};

35struct

bit39

void insert(int

x,data p)

43int query(int

x)49

}t;50

void

prepare();

59 t.insert(point[i].d,(data));60}

61}62int

fa[maxn];

63int find(int x)

64int

main()

曼哈頓距離最小生成樹

一 前人種樹 部落格 曼哈頓距離最小生成樹與莫隊演算法 部落格 學習總結 最小曼哈頓距離生成樹 二 知識梳理 曼哈頓距離 給定二維平面上的n個點,在兩點之間連邊的代價。即distance p1,p2 x1 x2 y1 y2 曼哈頓距離最小生成樹問題求什麼?求使所有點連通的最小代價。最小生成樹的 環切...

曼哈頓最小生成樹 模板題

曼哈頓最小生成樹 給定二維平面上的n個點,在兩點之間連邊的代價為其曼哈頓距離,求使所有點連通的最小代價。樸素的演算法可以用o n2 的prim,或者處理出所有邊做kruskal,但在這裡總邊數有o n2 條,所以kruskal的複雜度變成了o n2logn 結論 以乙個點為原點建立直角座標系,在每4...

二維曼哈頓最小生成樹

所以我們只要求乙個點在其45 角的區域內離他最近的點就行了,而這可以用線段樹或樹狀陣列解決 我們以y軸正半軸往右偏45 角的區域為例 點j在點i的這個區域要滿足的條件是 yj xj yi xi 且xj xi 那麼我們將點以x為第一關鍵字,y為第二關鍵字,排序後倒序插入線段樹 線段樹的線段這一維是離散...