去年の9月にAHCに参加し始めて1年経ったので、参加していく中で色々感じたことを書いておこうと思います。ちなみに、初めて参加したのが2023/9/3スタートのAHC023で、2024/9/2まで行われてたAHC036に参加していたので、2024/9/3にこの記事を書こうと思っていたのですが、当時色々と忙しくて(何ならそのせいでAHC036もちゃんと参加できなくて)今記事を書いています。
AHCに参加するまでと、今までの戦績
元々10年以上競プロ(Algo)をやってて、TopCoderのマラソンマッチもちょっと参加したりしてたので、ヒューリスティック系のコンテストもどこかで参加したいなーとは思っていたのですが、社会人になってからは時間とるのも大変だなーとなって、そもそも最近はバックギャモンというボードゲームにハマってAlgoすらやらなくなってました。
ただ、去年たまたまAHC関連のツイートを見かけた時にふと「自分も次は参加してみたいな」と思って、それで一度参加してみたら結構楽しくて今まで参加し続けてきたという感じです。正直どっちかと言えばまだAlgoの方が得意な気はしますが、Algoの方は今参加しても「昔ならこれ解けてたはずなのになー」みたいな気持ちになることがありそうで、そういう意味でAHCは新しさ・新鮮さもあって楽しんでいる感じです。
ちなみにAHCの今までの戦績はこんな感じです


今のところ予想以上に結果が出せてるなという感覚です(青になるくらいまでも結構大変かと思っていた)。と言っても主に短期AHCで運よく大勝ちできた回がきいてる感じで、長期AHCでも結果を出したいところ。
AHCに参加する中で感じたこと
ここから、AHCに実際に参加してみることで感じたことをいくつか書いてみます。
焼き鈍しやビームサーチのテクニックも大事だけど、それ以上に「問題の本質」をつかむことが大事
ヒューリスティック特有かつ代名詞的なテクニックとして焼き鈍しやビームサーチが真っ先に挙げられます。もちろんこれらも上位を狙う上では必要ですが、これをできればいい訳ではなく、やっぱり問題ごとにちゃんと性質をつかんで、とういう操作をすればいい点数を出せるかをまず考えるのが大事だと分かりました。そのためには単純に点数だけを見るだけじゃなく、ビジュアライザ等を使っていい点数を出すためには何が足りないか、どの部分を伸ばせば行けそうかといったところを考える必要があるというのが実際に参加してみて分かりました。
よく「強い貪欲」なんて言ったりしますが、実際にトップ争いをしてる人は焼き鈍しをやらなくても50位とかには入れるくらいの解をベースに焼き鈍しをして伸ばしていってるイメージがあります。もちろんトップ争いの順位を分けるのは焼き鈍しの性能だったり、焼き鈍しが強い人は「強い貪欲」が思いつかなくても焼き鈍しで頑張って伸ばしてそこそこの順位が取れたりしますが、まず目指すべきところはこの「強い貪欲」のようなものをそれぞれの問題で見つけられるようにすることなんだろうと思います。そして、確かにたまたま何となく試したものが予想以上にいい点数を出せることもあったりしますが、やはり強い人ほどこの「強い貪欲」を見つけられる打率が高いように思います。
Algo系と違って、強くなるための道が色々ある
元々マラソンマッチって社会人の方が強い人多いなと思ったんですが、実際にやってみるとAlgoよりは幅広い力が問われる気がして、確かに仕事でやったことが役に立ってる部分もあるなと思いました。そして、Algoは「Algoの問題を解くことでしか上達できないけど、Algoの問題を解けば上達できる」って感じなのに対し、AHCは幅広い経験をコンテストに活かせるのに対し、「これをやっておけば上達できる」というのがAlgoに比べたら見えづらいのかなと感じています(とはいえ強い人たちはUpSolveとかちゃんとやってそうなので、そこはしっかりやる必要はありそうですけど)
そんな感じで、AHCを始めたことでまた競プロ的なコードを書くことの楽しさも再確認できたので、今後もまた続けていきたいなと。上にも書いたように、まだ長期AHCでいい結果を出せてないので出したいんですが、次のAHC038もまた時期的に時間を取れるか分からないんですよね…