AtCoder Heuristic Contest 033

 トヨタ自動車プログラミングコンテスト2024#5(AtCoder Heuristic Contest 033)

 暫定288位。「最近ヒューリスティックコンテストちょっとやれるようになってきたかな〜」という浮かれ気分を完全に破壊される凶悪な問題だった。なにもアイデアが出てこないので実装することもできない。

 ほぼ問題を見て最初に浮かんだ回答「大クレーンが右側で搬出を担当する、少クレーンのうち一つだけを使って残りのコンテナをできるだけ右に詰めていく」からほとんど進まなかった。

 ここまでスコアが悪いというのはなにか重要な問題の性質、解法の択に気づいていないのだろうとは思ったが最後までわからなかったし今も全然わかっていない。

 一応、取り組む最終日(日曜日)に、少クレーン4台を常に2x2の形で保持しておけば、コンテナが盤面に詰まっている状態でも2x2を持ち上げてクルッと回転させることはできるのだなぁと思いついて途中まで実装はしたが、そこまでスコアが変わる感じでもなかったので諦めた。

 実装途中なので無駄に持ち上げたり下ろしたり、左右に振動したりやりたい放題である。

 とにかく適当なルールベースだと衝突だったり空マスを持ち上げたりとめちゃくちゃにバグりまくる。取りたいコンテナが他のクレーンの下だったりすると避けさせなきゃいけないとかも考えるとまともに実装できる気がしない。

 一方で、じゃあルールじゃなくて探索をなにか書こうと思っても、5つもエージェントがいるので平均分岐数が大きいし、盤面の良いスコア付けが思い浮かばなかったので探索もできなかった。もとのスコアでは良さがわかるまで遠すぎるし、短いスコアでは上手く目標のある行動を取れそうにない。

 ヒューリスティックコンテスト、こういうのもあるのか。難しすぎる。