codeforces 888G.Xor-MST(01字典樹+貪心+最小異或生成樹)

給你n個點,每條邊的邊權是兩個點的異或和,問你造成最小生成樹,須要的代價是多少。( n≤200000,ai≤230 )c++ 思路:把數都插到字典樹裏面,而後考慮兩個數的合併,最小代價的話,應該是儘量相同的多,因此能夠看作是兩個子樹的合併,那麼插的時候記錄一個siz,採起dfs,發現點root有左右兒子結點的時候,就能夠合併了,合併的方式是枚舉較小的子樹中的每個數,而後跑到另外一個子樹裏去查最小異
相關文章
相關標籤/搜索