二維最小乘積生成樹學習小記

2022-03-01 03:14:47 字數 1024 閱讀 8509

對於形如給定一些邊,其邊權為xi和yi,構造乙個生成樹,使得

我們稱這棵樹,為最小乘積生成樹。我們可以考慮,沿用最小生成樹的思想,把這種新穎的最小生成樹做對。

其實就是利用樹形結合的思想,將點弄到平面直角座標系上,使之明了,轉化問題,求出最優解。

應對類似的裸題,直接裸奔

我們將sigma(xi)看成橫座標,sigma(yi)看成縱座標,在座標系中繪製出來。並在x,y軸作垂線,構成乙個正方形

我們要求一種方案xy=k最小,也就是這個正方形最小,也就是反比例函式(等面積線)y=k/x最接近座標軸(k最小,即y最小)

顯然可以知道,把所有點列出來,構建乙個下凸殼,最優的點(x,y)必定在下凸殼上。

如下圖,如果乙個點不在凸包上,那麼以這個點作矩陣,顯然面積比以被圈圈起來的點作矩陣優,這更顯然吧?

網上大都用分治求解

固定凸包上最接近x軸與y軸的兩個節點,即求離x軸,y軸最近的點(分別以x,y為關鍵字作最小生成樹即可,所得x,y必定最小)。

尋找乙個點c,使得c離ab最遠,也就是△abc面積最大,想要用c來更新答案。這個點c是目前最優的。

如何找點c?我們用向量來考慮。可能覺得比較奇妙,說不出個之所以然,但是過程嚴謹,是沒有錯的,多悟一下,睡前想一想,第二天就懂了。

向量ab=(b.x-a.x,b.y-a.y)

向量ac=(c.x-a.x,c.y-a.y)

根據向量定義,得出s△abc=ab

Luogu5540 最小乘積生成樹

題目描述 對於乙個 n 個點 m 條邊的無向連通圖,每條邊有兩個邊權 a i,b i 求使 sum a i times sum b i 最小的生成樹。資料範圍 n le 200,m le 10000,a i,b i le 255 這題是一道非常妙的計算幾何題目。我們對於每個生成樹,用 sum a i...

二維曼哈頓最小生成樹

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

二維曼哈頓距離最小生成樹

原理 每個點在以它為頂點的45 角範圍內,只可能連向距離 曼哈頓距離 它最近的點。證明 以點a為原點,y軸正半軸向x軸正半軸方向偏45 角為例 如圖所示,設 ab ac 所有距離都是曼哈頓距離 a 0,0 b x1,y1 c x2,y2 ab x1 y1 ac x2 y2 bc x2 x1 y2 y...