カメヲラボ

主にプログラミングとお勉強全般について書いてます

競プロ日記011: 今年のまとめ

今年からマラソンマッチを本格的に始めました。また、マラソン力強化のためにAtCoderのアルゴにも挑戦してみました。来年以降もしばらく続けてみようと思うので、将来の自分とこれから競プロをやってみようかと思う方々の参考として、これまでのまとめを記録しておきます。

TopCoder Marathon Match(MM)

2022年のMMレーティング

2013年に初めてマラソンマッチに参加して、この時のレーティングが1720だったので、まずはそれを目指しましたがなかなか成績が安定せず、最高でも1625でした。しばらくはギリギリYellow Coderが続きそうです。とはいえ、初参加時の何となく解法と比べると自分が何をしようとしているか理解した上で解答できている感覚はとても大きくなっているので、単純に数値で判断するのも良くないかなと感じています。

現状では問題点が割とはっきりしています。それは、「自分より上位の人とアイデアはさほど変わらないのに、常にスコアが1割くらい低い」ということです。どうしてかというと、最適化云々以前に自分の実装がゆるいからです。たとえばグリッド上で最短経路を求めるようなケースで複数の案がある場合、状況に応じてその中からより良さそうなものを見つける、あるいは優先順位がつけにくい場合に確率的な偏りの少ない案を選ぶとか、その辺りの対処がきちんとできていない場合が多かったです。

これは単なる一例ですが、あらゆる実装面でこのような緻密さが足りないことが多く、その結果探索の精度が落ちるため持ち時間の10秒を十分に活かしきれていません。今後はその辺を丁寧にやる訓練が必要です。スコアが上がらない場合にほぼ100%陥ってしまったのは、「上位の人はきっと天才的なアイデアをもっているからだ。自分のような凡人には思いつけないんだ😢」という思考になって自分の今やっていることを信じられなくなるというミスでした。この辺は自分の実績とか性格の影響が大きいと思いますが、もっとトレーニングと実戦経験を重ねて克服するしかありませんね。

AtCoderアルゴ

MMと短期AHC(AtCoderヒューリスティック)の力を鍛える一環として、短時間でのコーディング力を高めるためにアルゴの方にも何回か参加するようになりました。とりあえず今の実力だと、このまま続けると緑くらいまではいけそうかなーというとことで止まっています。マラソンに役立っているかというとあまり関係なさそうというのが現時点の感想で、どちらかというとこれはこれでちゃんと過去問とか対策をして真剣に取り組んだ方が絶対面白いような気がしています。もう少し時間にゆとりができたら、将来的にこちらも本格的にやってみたいかなという気分です。

現状では3~4問解けるくらいで順位が大体2500~3000辺りですが、同じ解答数でも解くスピードが速いと順位的には1000くらい差が出るみたいです。最初の4問を高速に解答できたと仮定して5問目を解いた場合にACできたりもしているので、基本的にはスピードアップのトレーニングをすべきですね。周囲を見渡すと1000問以上解いている方ばかりなので、来年はできるだけたくさん解いて、500問くらい解いたらABCに数回チャレンジしようと思います。

それから使用言語に結構悩んでいて、Pythonで書いてみたりC++で書いてみたりしていたのですが、当初のMMの力を鍛えるという当初の目的からぶれないようにC++一択でやろうと決心しました。まあMMのことを考えなくても、PythonでTLEしたときに「もしかしたらC++なら通るかも…」みたいな気持ちになりたくないという気分ということもありますが…。

来年に向けて

一番はやはりMMで過去の自分を超えることですね。それから、AHCの方もMMと同じくらい頑張りたいと思います。ただ、スケジュール的にAHCとMMが重なったり、AHCが短期コン(4時間)とかだとなかなか参加できなかったりするので、やっぱりMMよりは優先度が下がると思いますが。まあそれでも青には到達しておきたいと思います。

つい先日Psyhoさんによるヒューリスティック・ボットコンテストのための無料Tipsをまとめたところですが、こういうのを見ているとやはり自分自身でアウトプットを重ねてまとめるという作業は必須化のような気がします。まあ今の時点でもそれなりに自分用のドキュメントを作ってはいますが、どんどん公開していったほうが良いかもですね。

ではまた来年!