M-SOLUTIONS プロコンオープン D問題:Maximum Sum of Minimum

問題. Maximum Sum of Minimum

 N 頂点からなる木  T と,正の整数  c_1, c_2, \ldots, c_N が与えられる.全単射  f \colon V(T) \to \{c_1, c_2, \ldots, c_N\} のスコアを各辺  u v \in E(T) に対して  \min\{ f(u), f(v)\} の総和とする.スコアを最大とする全単射を求めよ.

制約 1 \le N \le 10,000,  1 \le c_i \le 10^5

解法

 c_1 \ge c_2 \ge \ldots \ge c_N と仮定する.初めに全単射のスコアの上界が  c_2 + c_3 + \ldots + c_N であることを示す.任意の全単射  f に対して,各辺の値を降順に並べたものを  x_1 \ge x_2 \ge \ldots \ge x_{N - 1} とする. 1 \le k \le N - 1 に対して  x_1, x_2, \ldots, x_k が誘導する森  F_k を考える.このとき, x_k \le c_{k + 1} となる.なぜならば,一般に  n 頂点, s \,(1 \le s \le n) 個の木からなる森の辺数  m m = n - s となり, s = 1 のとき,すなわち木のときが辺数を固定したときの頂点数が最も多いので  x_k \le c_{k + 1} となる.したがって,  x_1 + x_2 + \cdots + x_N \le c_2 + c_3 + \cdots + c_{N} が成り立つ.

次に,ある全単射でスコアが  c_2 + c_3 + \cdots + c_N となるものを構成する.適当な頂点  r \in V(T) を根とした根付き木  T_r を考え, f(r) = c_1 とする.次に,下の図のように幅優先探索の訪問順に各頂点に順番に  c_2, c_3, \ldots, c_N を割り当てる.このとき,任意の頂点  v \in V(T) \setminus \{r\} に対して,その親の値は  v の値よりも大きいので親との間の辺の値は  f(v) となる.したがって,スコアの上界と一致する全単射を構成することができたので,この全単射が最適解となる.
       f:id:tatanaideyo:20190602044840p:plain:w400

計算時間 O(N \log N)

上界の証明に時間がかかりすぎていてツラかったので,証明の途中で取り敢えず投げたら AC した(たまたまだったかもしれないので反省).