A - Treant's Forest 解説 by mya3

AHC054 解法(109位・Perf. 2046)

解法

以下,

  • 「隣接」:マスが上下か左右かで隣り合う.
    (マンハッタン距離が1.)
  • 「連結」:伝説の花やその隣接マスを経由せず,すべての空きマスへ移動可能な状態.
    (移動の終点には伝説の花の隣接マスを含める.)

とします.

冒険者の上下左右をこの順でそれぞれ見ていき,各方向につき高々1体のトレントを配置します.
この時,冒険者との距離が近い順に配置可能なマスを見ていき,以下のいずれかを満たし,そのマスに配置しても連結が保たれる場所に配置します.

  • 冒険者との距離が5以上.
  • 冒険者のいる座標から見た,今見ている方向と伝説の花の方向とのなす角が45度以下.
  • 90%の確率で考慮:伝説の花と冒険者との直線距離が4以上.

ただし,見ているマスが伝説の花に隣接するマスであった場合には,連結を気にせずに配置します.

補足

  • 見ていく方向の順番は,いくつか試した中では冒険者の移動優先度順と同じこの順番が一番良さそうでした.
    (最終的な解法に近い状態での各シードの自己最高スコアに対する相対スコア平均で,最終解法の69%に対し他の順番では65%など.)
  • それぞれの条件は,「確認されるマスが多くなりすぎないようにしたい」「伝説の花の方向へは密に配置したい」「規則正しく並びすぎるのは避けたい」という思いから設定しました.
    (連結のみを見て配置した場合は59%.)

試したものの得点に繋げられなかったもの

ゴール周辺への先配置

伝説の花の隣接3方向と1マス空けた残りの1方向とに配置しておき,ゴールしそうになった方向を塞ぐことで,偶然見つかってしまう可能性を下げられます.
あるいは,延長して2本の階段状のルートとしたり,折り返して暫定最短ルートと判定されることを避けたりなども考えられるのですが,柔軟に配置していく解法と比べていずれも得点が下がってしまいました.

シミュレート

冒険者がいたマスと実際の移動先のマスとで各未確認マスへの暫定距離を比較することで,目的地となっているマスの候補を絞り込めます.
また,冒険者の各隣接マスからの各目的地候補マスへの暫定距離を比較することで,次の移動方向の確率を計算できます.

目的地候補の各マスが目的地である確率は一様であるとし,移動によって確認済みのマスが増えた場合には (新しく確認されたマスの個数) / (目的地候補マスの個数) の確率で目的地候補がリセットされるなどとして数ターンシミュレートを行い,状態スコアの期待値を元に各ターンでの配置を決めようとしたのですが,貪欲な解法には勝てませんでした.
状態スコアとしては,「伝説の花(や冒険者)の位置から未確認マスへの実距離」「ランダムに選択したいくつかの未確認マスから他の未確認マスへの実距離」を主軸に「伝説の花と冒険者との距離」「未確認マスの個数」などを組み合わせようとしたものの,伝説の花付近での望ましくない配置により状態スコアが強くなりすぎるパターンが存在したり,状態ごとの比較が難しかったりと,うまく状態の良さを表現できませんでした.

投稿日時:
最終更新: