AtCoderで入水した話

 

1.はじめに

お久しぶりです。ragnaです。

この前のABC336で入水したので緑の間にやったことを残しておこうと思います。予め言っておきたいのですが、僕はめちゃくちゃ精進量が少ないです。なので「やっておけばもっと早く入水できたかもしれなかったこと」も書こうと思います。

 

2.やったこと

2-1.ABCに出る

とりあえず(用事がある時を除いて)ABCには毎回出ましょう。僕はとりあえずA-Eの5完を目標にしていました。実際に5完出来たのは5回くらいでしたが、いい感じの目標だったんじゃないかと思います。

 

2-2.ABCの復習をする

ABCに出たら基本的に「解けそうで解けなかった1問」を(difficulty<1600なら)ACしました。典型の組み合わせ方や新しく典型を覚えられてよかったです。

 

2-3.過去問を埋める

ABC200以降の水diffのEまでを埋めようとしました。まあそんなに埋まってないんですが……

 

2-4.オンサイトに行く

そこそこの数のオンサイトに出ました。直接的に効いたかは分かりませんが、モチベーションの維持には貢献したと思います。

 

2-5.典型90を埋める

星4以下を低難度から埋めていきました。まだ星4がちょっと残ってますが……

正直これがかなり効いた気がします。

 

3.やった方が良かった(かもしれない)こと

3-1.ARCに出る

僕はARCに出ないという誓いを立てているので(途中から)出ませんでしたが、忌避感がないのなら出た方がお得だと思います。

 

3-2.作問をする

既存の問題をちょっと変えた問題を考えてみて、解けそうならTwitter(自称X)に投げる、とかでいいと思います。何なら解けなくても投げていいと思います。多分優しい人が教えてくれます。

 

3-3.鉄則本を埋める

やった方がいいのは確実なんですが、ABCで出てきた時に確認するので十分な気がしてるのでそこまでやってません。苦手分野が自分で分かっているならそこだけ解く、とかでもいいと思います。

 

4.新しく覚えたアルゴリズム/データ構造

4-1.fenwick_tree

ACLのやつです。累積和を基本的にO(logN)で管理できるのでたまに使います。

 

4-2.lazy_segtree

ACLのやつです。segtreeで出来ることはlazy_segtreeで(多分)出来るので、これを使えるようにすれば十分だと思ってます。

betrue12.hateblo.jp

僕はいつもここからコピペしてます。おすすめ。

解けそうなのに解けなさそうな問題はこいつを使えば大体解けます。

 

4-3.bitDP/ダイクストラ

これは入緑時点である程度は使えてましたが、問題を見てすぐに見抜けるようになったと思います。実装もかなり早くなった実感があります。ダイクストラ法は抽象的なライブラリがあればもっと楽なんだと思いますが、作るのが面倒なので毎回書いてます。結局は4完でもいいので早解きをするのが重要な気がします。

 

5.おわりに

いかがでしたか?精進量の少なさにびっくりしたと思います。僕もびっくりしてます。

今後はrating1400を目標にしつつヒュや作問も頑張りたいと思います。

ところで最近『空の境界』の文庫版を読んで神妙な気持ちになってたら入水してから1か月経ってました。気になった人はぜひ読んでみてください。マジですごかったです。