description
平面座標系xoy內,給定n個頂點v = (x , y)。對於頂點u、v,u與v之間的距離d定義為|xu – xv| + |yu – yv|
你的任務就是求出這n個頂點的最小生成樹。
input
第一行乙個正整數n,表示定點個數。
接下來n行每行兩個正整數x、y,描述乙個頂點。
output
只有一行,為最小生成樹的邊的距離和。
sample input
4sample output1 00 1
0 -1
-1 0
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為第二關鍵字,排序後倒序插入線段樹 線段樹的線段這一維是離散...