2023/9/24に開催された丸紅プログラミングコンテスト2023(AtCoder Heuristic Contest 024)に参加しました。
ヒューリスティックのレートは、あとちょっとで青に到達というところですが、ここのところ大した結果が出せずで、足踏みが続いています。
今回は、久々の短期コン。今度こそ、良い成績を出して入青を決めようという気持ちで挑みました。
参加します。今度こそ入青したい!
— devgenjin77 (@devgenjin77) 2023年9月24日
丸紅プログラミングコンテスト2023(AtCoder Heuristic Contest 024) - AtCoder https://t.co/JJZ1TGa1A7
今回の結果
350位で終了。今回も微妙な結果になりました。
パフォーマンスは、水色の下というところ。またしても、入青はお預けになりました。。
また次回頑張ります。
— devgenjin77 (@devgenjin77) 2023年9月24日
devgenjin77さんの丸紅プログラミングコンテスト2023(AtCoder Heuristic Contest 024)での成績:350位
パフォーマンス:1292相当
レーティング:1570→1576 (+6) :)
Highestを更新しました!#AtCoder #丸紅プログラミングコンテスト2023https://t.co/6NoifxupvT
振り返り
試したい事は色々ありましたが、時間に追われてほとんど実装できずでした。
A問題
結論から言うと、最低限のことだけやって提出したという感じになりました。
#AHC024 お疲れ様でした。
— devgenjin77 (@devgenjin77) 2023年9月24日
最終結果350位、得点は93,679点でした。
やってみたいことは色々ありましたが、実装する事が出来ずで、結局外周マスを可能な限り0にする、で終了です。 pic.twitter.com/chVcLMfICw
今回は、マップの各エリアの連結性を維持しながら、どれだけ全体の面積を小さくできるかという問題でした。
連結性を崩すのはNGなので、適当にいじるというのが出来ないところに難しさがあります。
コンテスト開始後は、とりあえずどういうアプローチが考えられるか検討してみましたが、なかなか良いアイデアは思いつかず。なんとか一時間強検討して浮かんだアイデアは、こんな感じでした。
適当に1行、または1列選んで消すことでマップを圧縮できないか。
上記を実現しやすくするために、マップ上の余計に出っ張ってるマスをいい感じに塗り替えられないか。
とりあえず、外周マスを可能な限り
0
に置き換えてスコアを稼げないか。
このうち、3.が一番簡単そうなので、取り急ぎ実装してみようかという感じ。
あとは1.と2.だが、これが難しい。。とにかく、消すことによって、全体の連結性が崩れたらダメなので、そこの判定をどうしようかと色々悩みましたが、まったくいい感じの実装が出来ずじまいでした。
で、気が付いたら、もう残り1時間になろうかというところで、ノー提出。なんか提出しないとしょうがないという所まで追い込まれました。
結局、3.の実装を取り急ぎ実施し、なんとか気持ち程度の点数を獲得。あとは、これを少し改善して、外周を可能な限り0
で埋めれる実装まで提出したところで終了です。
最終提出コード
https://atcoder.jp/contests/ahc024/submissions/45915860
感想
とにかく考察に結構時間を使ってしまったので、実装に使える時間がありませんでした。
コンテスト後のTLを見てみると、今回は焼きなましが強かった模様。やはり、焼きなましの勉強をしないとなあという感じです。
これまでの実績
まだまだ入青は遠いです。
総括
短期コンテストの場合は、実装時間に限りがあるので、発想はともかく、実装力が結構大事だと痛感した回でした。
特に、ヒューリスティックコンテストで要求される実装スキルは、アルゴリズムのコンテストとは異なるものになるので、過去問に取り組むことで慣れていく必要があるかというところです。
次月もAHCの開催があるということなので、それに向けて、とりあえず焼きなましが普通に書けるぐらいには精進していこうと思います。
ということで、また次回も頑張ります。