Indeedなう(オープンコンテストB):D - Game on a Grid

問題

https://atcoder.jp/contests/indeednow-finalb-open/tasks/indeednow_2015_finalb_d

考え方

P_{(i,j)} \ge 0 よりなるべく多くの点 (i,j) に訪問することが最適であることがわかる。つまり全頂点に訪問する。また最大値を最小値と読み替えると、グリッドグラフ上で最小全域木を作ることができる。

各頂点に初めて訪問する場合に P_{(i,j)} を点を得ることができる。全頂点には必ず訪問するので \sum P_{(i,j)} 点は得ることができる。ま点 (i,j) から (i,j+1) または (i+1,j) に訪問するときの移動ボーナスをグリッドグラフの辺として最小全域木を構築すると、最小全域木の和の最小値が求めたい解である。

よって最小全域木をプリム法またはクラスカル法で求めれば良い。

Submission #4088911 - Indeedなう(オープンコンテストB)

どこに着目して考察するべきだったか

最大値⇔最小値の読み替えで最小全域木の和を求めれば良いことが分かる。また移動ボーナスと各頂点への訪問点は独立して考えて良い。

何がバグっていたか

移動ボーナスと初めて訪問するときの点は独立して考えてよい。というか独立して考える必要があった。

得た知見(典型ポイント)

  • 最小値を求めよ⇔最大値を求めよ
  • 変数を独立して考える

類題