一本通 3 1 練習 4 Tree 題解

2021-10-09 06:48:52 字數 1442 閱讀 9132

題目位址

第一眼看到此題,感覺就是一道水題,直接加上前nee

dneed

need

小的白邊就行了,再處理到n−1

n-1n−

1條黑邊,但是,打完後突然發現有問題。。。 雖然加上了前nee

dneed

need

小的白邊,但是會出現樹不連通的現象,即無法構成生成樹

正解思路

二分乙個增量mid

midmi

d(可正可負)。

跑一遍kru

skal

kruskal

kruska

l,將所有的白邊都加上a

aa,記錄構成生成樹後所用到的白邊,如果數量小於nee

dneed

need

就將右端點往左移,否則往右移。

最後的ans

ansan

s需要減去增量nee

d∗mi

dneed * mid

need∗m

id

#include

#include

#include

using

namespace std;

const

int maxn =5*

1e4+5;

const

int maxm =

1e5+5;

int n, m, need, fa[maxn]

, l, r, mid, ans, cnt;

struct node dis[maxm]

;bool

cmp(node x, node y)

intfindset

(int v)

}bool

unionset

(int u,

int v)

bool

check

(int mid)

}sort

(dis +

1, dis +

1+ m, cmp)

;for

(int i =

1; i <= m; i++)if

(tot == n -1)

break;}

for(

int i =

1; i <= m; i++)}

if(white < need)

else

return1;

}int

main()

l =-1e2-5

, r =

1e2+5;

while

(l <= r)

else

}printf

("%d"

, ans)

;return0;

}

一本通 3 1 練習 4 Tree 題解

題目位址 第一眼看到此題,感覺就是一道水題,直接加上前 need 小的白邊就行了,再處理到 n 1 條黑邊,但是,打完後突然發現有問題。雖然加上了前 need 小的白邊,但是會出現樹不連通的現象,即無法構成生成樹。正解思路 二分乙個增量 mid 可正可負 跑一遍 kruskal 將所有的白邊都加上 ...

題解 一本通 5 4 練習 1 塗抹果醬

題目傳送門 給出 n,m,k 表示有乙個 n times m 的網格,第 k 行已經確定了,每個格仔只能填 1,2,3 但是必須滿足相鄰格仔顏色不同,問有多少種合法方案。1 le k le n le 10 4,m le 5 因為這道題目並不難,所以這篇部落格主要講如何卡到 text 至少在2020 ...

一本通的遞迴練習

給定乙個由不同的小寫字母組成的字串,輸出這個字串的所有全排列。我們假設對於小寫字母有 a b y z 而且給定的字串中的字母已經按照從小到大的順序排列。char a 10 b 10 將a字串的各種排列依次放到b字串中 int vis 10 n 用vis i 來代表a i 字母有沒有被訪問過 void...