牛客練習賽69C 旅行 結論,最大生成樹

2021-10-09 09:31:34 字數 730 閱讀 3596

dis

x,

ydis_

disx,y

​表示x,y

x,yx,

y的所有路徑的最短的邊的最大值。

求乙個1∼n

1\sim n

1∼n的排列,使得∑i=

2ndi

si,i

−1

\sum_^ndis_

∑i=2n​

disi

,i−1

​最大首先一定是走在最大生成樹上的路徑

考慮兩個已經確定路徑的集合,現在合併這兩個集合,因為是從大到小列舉的,所以對於合併的這條邊顯然是走的次數越少越好,那麼顯然最好是只走一次。

所以其實答案就是最大生成樹的權值和。

#include

#include

#include

#define ll long long

using

namespace std;

const ll n=

5e5+10;

struct nodea[n]

;ll n,m,fa[n]

,ans;

ll find

(ll x)

bool

cmp(node x,node y)

intmain()

printf

("%lld"

,ans)

;}

牛客練習賽69 C旅行(最大生成樹)

最小生成樹表示的是 n 個點的路徑代價之和最小,該題求 n 個點路徑代價之和的最大值,也就是求最大生成樹。證明 可以發現,對答案有貢獻的邊肯定是最大生成樹上的邊,那麼可以將這些邊先拉出來,每條邊至少會被貢獻一次 對於當前的乙個聯通塊,找到最小的一條邊,那麼這個聯通塊肯定被分成了兩個聯通塊 考慮怎麼樣...

牛客練習賽 69

第一次打牛客直接。y1s1牛客的評測系統真的慢,搞得我不想交 題目鏈結 首先先對陣列a逆序貪心可得val i,j a1 a2 ai j val i,j a 1 a 2 dots a val i,j a 1 a 2 ai j 嘗試證明 分析可知我們最終會選擇i j i ji j個陣列a的數,貪心肯定每...

牛客練習賽69 B

題意 給定n nn個數,乙個x xx表示可以劃分成最多x xx個串,乙個y yy表示在乙個串中最多選擇y yy個數。最後求 i 1x j 1yv al i j sum x sum yval i,j i 1x j 1 y va l i,j v al i,j val i,j val i,j 為 將n n...