トヨタ自動車プログラミングコンテスト2023#6(AtCoder Heuristic Contest 026)参加記

2023/11/5に開催されたトヨタ自動車プログラミングコンテスト2023#6(AtCoder Heuristic Contest 026)に参加しました。

atcoder.jp

前回のAHCで青パフォをゲットし、ヒューリスティックのレートは、やっと入青というところまで来ました。

今後は、青パフォ以上を取っていかないと、まともにレートが上がっていかないという状況。今回は青パフォ目指して頑張っていきます。

今回の結果

なんと542位で終了。。全くスコアが伸びずで、散々な結果になりました。

AHC026結果
AHC026結果

パフォーマンスは、緑色の真ん中というところ。レートは結局1しか上がりませんでした。。

振り返り

最初の方針が悪かったみたいです。。

AHC026提出結果
AHC026提出結果

A問題

A - Stack of Boxes

方針の概要としては、以下のような感じでした。

今回は、10個の山に積まれた箱を番号順に取り出す時、どう動かせば効率良く全て取り出せるかという問題。

最大の操作回数が5000回ということで、箱の数200に対しては少し大きめかなあという印象。

ふつうにやれば、取り出すべき箱の上のをごっそり他にもってけば良いので、これだけ操作回数が多いのは、まとめて持っていくよりは分割して各山に散らす方針が良いのでは?という感じがしました。

次に、動かすべき箱のかたまりを上から下へ見た時に、単調増加でない箇所があれば、いずれ下にある箱を取り除く時に、上にあるかたまりを動かす必要がでてくるので、最初から分割して運んだらいいのでは?というアイデアが浮かびました。

さらに、動かす先は、できるだけ自分より小さい数が少ない場所が良いだろうということで、かたまりの移動先の山の転倒数を操作前後で比較し、増加具合が一番小さい山を遷移先とすることに。

これで、実装したら結構いい感じになるかと思ってましたが、実際に提出してみると、順位は400の中盤ぐらいという感じで全然大したことが無かったです。。

この後は、前半だけ、かたまりを丸ごと移動させて、後半は単調増加のかたまりに分割して移動するなどの工夫を入れてみましたが、気持ち程度の得点増加にしかならずでした。

最終提出コード

https://atcoder.jp/contests/ahc026/submissions/47306750

感想
  • 最初に選んだ方針がダメすぎたのと、方針転換が全然できなかったのが反省点かと。実装にも結構手間取ったので、色々試す余裕は無かったです。

  • コンテスト後のTLを見てみると、今回は山毎にソートする方針が強かった模様。が、、理屈がよくわかってないです。

これまでの実績

1上がりました。

コンテスト実績
コンテスト実績

総括

今回の短期コンテストは、ハズレ方針を引いてしまったなあという感じです。

大変残念な回でしたが、めげてても仕方ないので、また次、勝てるように精進していこうと思います。

ということで、また次回も頑張ります。