差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
最新のリビジョン両方とも次のリビジョン
programming_algorithm:contest_history:atcoder:2019:0112_aising2019 [2019/02/04] ikatakosprogramming_algorithm:contest_history:atcoder:2019:0112_aising2019 [2019/02/05] ikatakos
行 231: 行 231:
     * 頂点 $v$ を根とする部分木で、     * 頂点 $v$ を根とする部分木で、
     * 今まで切った辺が $i$ 本の時の、     * 今まで切った辺が $i$ 本の時の、
-    * $v$ を含む連結成分の__頂点の値が全て正であるような切り方__の中で+    * $v$ を含む連結成分の__頂点の値が全て正であるような切り方__の中で
     * $v$ を含む連結成分の和の最小値     * $v$ を含む連結成分の和の最小値
   * (B) $DP2[v][i]=$   * (B) $DP2[v][i]=$
行 241: 行 241:
 ただし、$v$ を含む連結成分"以外"は、条件を満たすように切られているものとする。 ただし、$v$ を含む連結成分"以外"は、条件を満たすように切られているものとする。
  
-条件1つでは、連結成分の和が負にならないといけないので、辺を切った数が同じなら、和は出来るだけ低く保つのが常によい。 +$i$ 範囲の上限は、部分木のサイズとなる。 
-「連結成分内の頂点が全て正」の場合は和は関係ないので $DP1は必ずしも最小値でなくてもよいような気も一瞬するが、これは暫定であるため、将来的負の頂点と統合されて「連結成分内の和が負」の方の条件切られることになるかも知れない。 + 
-よっ両方とも、和を低保つようにDPを行うのがよい。+(B)では、連結成分の和が負にならないといけないので、辺を切った数が同じなら、和は出来るだけ低く保つのが常によい。 
 + 
 +本来は(A)の場合は和は関係ないので$i本の時にでるかできないかのみ保持しだけでかったらしい。
  
 <code> <code>
行 266: 行 268:
 ===DP=== ===DP===
  
-DPの更新を楽にするため、「不可」を示す数を極端に大きな数とする。(頂点の和になり得ない数。全頂点が最大値の$10^9$であり、$N=5000$ なので、$5 \times 10^{12}$ より大きい数)+DPの更新を楽にするため、「不可」を示す数を極端に大きな数(inf)とする。(頂点の和になり得ない数。全頂点が最大値の$10^9$であり、$N=5000$ なので、$5 \times 10^{12}$ より大きい数)
 すると、上の例の ''DP1[v][1]'' のように、不可な切り方と可能な切り方が混在する場合でも、可能な切り方同士の時と同様 ''min'' を取ることで更新が行える。 すると、上の例の ''DP1[v][1]'' のように、不可な切り方と可能な切り方が混在する場合でも、可能な切り方同士の時と同様 ''min'' を取ることで更新が行える。
  
programming_algorithm/contest_history/atcoder/2019/0112_aising2019.txt · 最終更新: 2019/02/05 by ikatakos
CC Attribution 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0