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...