AtCoderヒューリスティックも黄色になりました

レート推移
ks2m - AtCoder

33歳から競プロを始めた37歳業プロerのks2mです。
2022/10/1にRated16回目でヒューリスティックも黄色になりました。

アルゴリズムが黄色になるまでのことは以下に長々と書いていますが、ちょうどアルゴリズムで黄色になった直後くらいからヒューリスティックのRatedが始まったという時期感で、なんかその後のことを書くのにもちょうどいいタイミングな気もしたのでまた色変記事を書いてみます。
まあ大して書くことないんですが。
ks2m.hatenablog.com

 

アルゴリズム黄色になったその後

4ヶ月ほどで最高レート2129まで到達しましたが、以降2030前後の黄色最下層を推移し続け、今では何度も青落ちしながらもぎりぎり黄色にしがみついているような状態です。*1

個人的には、2100くらいに高い壁があって、本物の黄色はその上からかなと思ったりしています。

精進の方はこの1年7ヶ月の間何もしていないと言ってもいいかもしれません。
少なくとも、新しく覚えたこと何があったかと思い出そうとしても、何1つ思い浮かばないような状態。*2
まあACLにあるものを使いこなせる度合いとかがわずかに上がったりはしたかも。


実際にやってきたことは、

  • AtCoderのコンテストには全て出る(yukicoderは月1回も出れなくなっている)
  • 2021年末まではくじかつで2日に1回以上はABC1回分の解き直しをしていた
  • 2022年に入ってからは平日は灰diffでStreakつなぎをしているだけ
  • 長期AHCの期間中は仕事と生活に必要な時間以外はだいたいAHCに取り組んでいた
  • E8本(アルゴリズム×数学)とけんちょん本(アルゴリズムとデータ構造)を一応読んでみた(後者はまだ途中)

といったところで、コンテストに出ることだけはなんとか続けています。

ABCの解説放送もいつしかほとんど見なくなりました。
その内G問題辺りを埋めにいこうとしたりすればお世話になるとは思いますが。
 

ヒューリスティックに関してやってきたこと

こちらも結局AHCに欠かさず参加するくらいしかしていない気がします。
そもそもまだやっている回数が少ないので、経験が増えるだけで伸びてきた気がします。AtCoder以外のものは全然参加しておらず、そもそも何があるのかもあまり把握していません。

あとは終了後に色々な人が書いている解説や日記等をざっと見て雰囲気をつかんだつもりになっているくらい。

一応Introduction to Heuristics Contestの解説を読むなどして、山登り、焼きなまし、ビームサーチといった手法がどういうものかはだいたいわかっていますが、それらを使えているという自信はあまりないです。


AHC本番の中でやっていること、考えるようにしていることなどで言えば、

  • だいたい何もしないなどの最低の自明解よりは一歩進んだ貪欲解くらいから考え始める。*3
  • 長期AHCであれば、その次くらいにとりあえず得点計算を作って、出力が条件を満たしているかチェックする処理もなるべく早めに作る。
  • 人力で解くとしたらどのように操作するかを実装に落とし込む。*4
  • 最適値がわからないパラメータ(評価Aの重みをだいたい100くらいにするみたいなの)が出てきたら、実行時間が余っているならばパラメータを全探索して最良を取ることをする。*5


環境面について言えば、やっていないことの方が多そうです。

  • 可視化はほとんど提供されているビジュアライザ頼りで、あとは特定の処理が動いている回数のカウントを適宜仕込んで出力するなど、文字ベースで出せる情報をいくつか出したりしている程度。*6
  • デバッグはそういった情報や、ブレークポイントからのステップ実行頼り。
  • ソースの上の方に、標準入力かファイル読み込みか、1ケース実行か複数ケース実行か、デバッグ情報の出力を行うかどうか、といったフラグを用意しておいて、true/falseを変えるだけで切り替えられるようにしている。*7
  • 上記のような部分だけ毎回テンプレートとして使い回している。
  • Optunaでパラメータ調整?何それおいしいの?Excelに実行結果表作ってメモしていってこの辺が良さそうかなとかやってるだけだが?
  • 実行するのにサーバ借りる?そんなの考えたこともない。

 

今後

このままAHCに参加し続けていけば2100~2200くらいまではいけるのではないかとは思っています。
橙はどうだろう・・・。
まだあまりまともにヒューリスティックの勉強をしてきたと思っていないので、やればアルゴリズム橙よりは可能性はあるかもしれませんが、まあ多分一生無理そうな気がします。


これまで黄パフォが6回出ていますが、全て長期コンなので、とりあえず短期コンももう少しまともな成績を残せるようにしていきたいです。

正直短期コンは乱暴に言えば「焼きなましさらっと書けますか?」が大半であるように思っているので、つまりはある程度さらっと書けるようにしていきたいということでもあります。
現状は焼きなましにしろビームサーチにしろ、貪欲以上の結果がまともに得られるようになるまで数日がかりなことが多いので。

*1:言っている側からARC149でまた青落ちした。

*2:本当に何も挙げられなくて、一体何してたんだろうという気持ちに。

*3:直近のAHC014では、「0」だけではなく、「適当に全探索して長方形を作れるだけ作る」くらい。

*4:AHC013ではこれで上手くいった。

*5:AHC012では縦横に分割する回数を全探索した。100位解法だけど。

*6:第9回Asprovaではビジュアライザの使い方がわからなかったせいで早々に撤退したりしている。

*7:そのまま提出できないのがいまいちで時々戻し忘れもあるが、Javaだとクラス名をMainに変え忘れるとCEになるので、「全部falseにしてMainにする」のセット改変を癖にしてなんとか提出ミスを減らしている。