luogu P1268 樹的重量

2022-02-05 08:32:47 字數 902 閱讀 5021

一開始把這題想複雜了,,,

這裡記\(di[i][j]\)表示\(i\)到\(j\)的距離

首先如果\(n=2\),答案顯然為\(di[1][2]\)

如果\(n=3\)

懶得畫圖了盜圖過來

那麼3號點會從1,2號點的路徑上伸出去,相比較\(n=2\),答案多出了\(\frac\)

\(n=4\)的情況

如果把4看做從1,2號點路徑上伸出去的,那麼答案(紅色部分)會算重一部分;把4看做從1,3號點路徑上伸出去的,那麼答案(藍色部分色部分)則是正確的,同時我們也發現藍色比紅色短

以此類推,每次插入乙個點\(i\),把它依次看做從1,\(j(1號點路徑上伸出去的,然後答案加上\(min(\frac)\).取min才不會和前面的答案算重

其實我一開始考慮記錄每條路徑上哪個位置伸出去什麼點,麻煩的死

#include#define ll long long

#define il inline

#define re register

using namespace std;

const int n=1000000+10;

il ll rd()

while(ch>='0'&&ch<='9')

return x*w;

}int n,di[40][40];

int main()

printf("%d\n",ans);

}return 0;

}

luogu P1268 樹的重量

嘟嘟嘟 一道非常好的構造題。我反正是一點思路都沒有,最後還是看了題解。假如n 2,那麼樹的重量就是di,j。然後n 3,畫乙個圖 則重量 d1,3 d2,3 d1,2 2。n 4同理 加上的應該是 d1,4 dj,4 d1,j 2 j 4 的最小值,這裡面j 3。因為如果不是最小值的話,比如 j 2...

列舉 Luogu P1268 樹的重量

樹可以用來表示物種之間的進化關係。一棵 進化樹 是乙個帶邊權的樹,其葉節點表示乙個物種,兩個葉節點之間的距離表示兩個物種的差異。現在,乙個重要的問題是,根據物種之間的距離,重構相應的 進化樹 令n 用乙個n上的矩陣m來定義樹t。其中,矩陣m滿足 對於任意的i,j,k,有m i,j m j,k m i...

p1268 樹的重量

傳送門 題目 樹可以用來表示物種之間的進化關係。一棵 進化樹 是乙個帶邊權的樹,其葉節點表示乙個物種,兩個葉節點之間的距離表示兩個物種的差異。現在,乙個重要的問題是,根據物種之間的距離,重構相應的 進化樹 令n 用乙個n上的矩陣m來定義樹t。其中,矩陣m滿足 對於任意的i,j,k,有m i,j m ...