2022/4/24に開催されたALGO ARTIS プログラミングコンテスト2022 (AtCoder Heuristic Contest 010)に参加しました。
ヒューリスティック系のコンテストは、AHC008以来で2ヶ月ぶりの参加となります。AHCは、そんなに頻繁に開催されるわけでもないということで、機会があれば積極的に参加してみようという感じでやってます。
あとは、ヒューリスティックのレーティングも全然下の方なので、正の得点が取れる提出が出来たら上がるんじゃね?という甘い考えもありますがね。
参加します。とりあえず提出することを目標に頑張ります✊
— devgenjin77 (@devgenjin77) 2022年4月24日
ALGO ARTIS プログラミングコンテスト2022(AtCoder Heuristic Contest 010) - AtCoder https://t.co/4JW0gJYi3X
今回の結果
で、今回の結果ですが、無事に正の得点を取ることに成功しましたとさ。
今回はなんと水色パフォーマンスまで出すことが出来、レートの方も大幅に上昇させることに成功しました。
めちゃ上がった
— devgenjin77 (@devgenjin77) 2022年4月24日
devgenjin77さんのALGO ARTIS プログラミングコンテスト2022(AtCoder Heuristic Contest 010)での成績:322位
パフォーマンス:1268相当
レーティング:369→665 (+296) :)#AtCoder #ALGOARTISプログラミングコンテスト2022(AtCoderHeuristicContest010) https://t.co/jaK0stsspk
振り返り
特に上手い解法など思いつかずでしたので、とりあえずそれっぽいプログラムを書いて出しただけとなります。
A問題
とりあえず問題文を一読し、小一時間ほど検討してみましたが、方針らしきものは全く浮かばす。とりあえず今回は正の点数をとることを優先して、まずは出せるものを作り上げていくことにしました。
まずは、入出力部分を作成し、そのあと問題文中にある疑似コードを参考に環状線の長さを求めるコードを作成。それを元に評価関数を作成しました。
あとは、グリッドの内部をランダムに選択し回転させた後、評価関数にかけるのですが、その際、評価関数内で環状線の切れ目になったマスを優先的に回転させることで多少効率が良くなるかという考えで実装を進めました。
で、とりあえず評価関数の実施回数を100回程度にしたプログラムを作成し、それっぽい出力が出てきたので一応提出。8000点少々という点数ですが、なんとか正の点数を取るという目標は達成しました。
あとは、評価関数の実施回数を増やしてみたり、ある程度ランダムにマスを選んで回転させることでスコアが改善しないかと色々調整した後2回目の提出を行い、スコアが多少は改善。
ただ、上位陣の点数を見てると、本当に桁外れの結果が出ており、全く歯が立ちません(笑)。
どうすれば、こんな点数が出るんだろうという考えに浸りながら、これ以上自分の提出をいじくる気力も沸かずで、終了の時間を迎えましたとさ。
最終提出コード
https://atcoder.jp/contests/ahc010/submissions/31232040
これまでの実績
元が灰色だっただけに、そこそこの内容でもレートは大幅に上昇しました。やはりレートが上がるのは気持ちが良いものです。
総括
今回は、あまり大した実装はできていないかと思っていましたが、パフォーマンスは水色というところで望外な結果が出たというところです。
最近は、アルゴリズム系コンテストの精進を優先的に進めているので、ヒューリスティック系コンテストの対策は全然できていない状態ですが、AHCは参加することだけでも勉強にはなりますので、次回以降も参加していこうと思います。
ということで、また次回も頑張ります。