入茶

 

AtCoderで茶色になった。

f:id:quf:20210620084624p:plain

 

AtCoderってなに

AtCoder

まず競技プログラミングとは。例えば以下のように問題・制約・入力が与えられるので、制限時間内に正しい解答を返すプログラムを書くというもの。 解けた問題の難易度や解答の早さを競う。

 

A - kcal

f:id:quf:20210620085126p:plain

AtCoder競技プログラミングコンテストサイトの日本最大手。オンライン・リアルタイムで毎週コンテストが開催されている。コンテストでは難易度別にいくつか問題が用意されていて、より難しい問題を解いたり、より早く正解を提出したりすると良い順位がもらえる。

コンテストの成績に応じて参加者のレーティングが変動する。だいたいのレベル感は茶色で将棋ウォーズの1級くらいとのこと。

AtCoder コンテストについての tips - Qiita

 

 

いきさつ

2021/04の中旬くらいに”競技プログラミングやってみるか”という気持ちになり、てきとうな入門書を買った。この時は言語の違いすら分からず、入門書のとおりにPythonで始めた(後に競プロではC++が主流なことを知る)。まぁ言語はポケモンでいう最初の3匹みたいなもので、べつに何を選んでもなるようになる。

 

入門書を読み進めるのと並行してAtCoder Beginners Selectionを解いた。なかには丸一日考えるようなものもあったが、なんとかすべてACした。ここまででだいたい10日間くらい。

atcoder.jp

 

04/24、コンテストに初参加。AB2完で、レートは11になった。

05/08、初めて3完する。レートが113になる。

06/13、初めて4完する。レートが328になる。

06/19、4完して入茶。レートが480になる。

 

というわけで茶色になったものの、直近2回は不相応の4完緑パフォでかなり上振れたという実感がある。未証明だがたまたま解法が思いついたというやつ。収束する前に実力をつけて本物になりたい。おわり。

 

よかったコンテンツ

競プロ全般

レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【初級編:競プロを始めよう】 - Qiita

初級編、中級編を読むだけでこれから何をすればよいかがすべてわかる。

これで新しい知識を得て、下にあるProblemsで過去問を解くだけで日々の勉強が完結する。

 

AtCoder Problems

過去問の一覧。上達するには上のQiitaとこれだけで必要十分。使い方はググると分かる。

いろいろ機能があるが、過去問の絞り込みと練習量が可視化されるのがとくにうれしい。自分は茶色になった時点でRated Point Sumが24,000だった。

f:id:quf:20210620130406p:plain

おすすめの使い方はProblems → 自分のIDを入れてList → Only Trying, Difficulty to "自分の色 or 1つ上の色"に設定。Solve Probが30%以上のものを上から解いていく。

この設定だと簡単すぎるものも出てくるが、早解きの訓練として使う。時間がかかった問題については解説を読み、他の人の提出から簡潔な実装を探してまねする。

逆に丸一日考えても解けないような難しすぎる問題は、後回しにして実力がついてから再挑戦するか、解説を読んで解く(いわゆる解説AC)。どちらがよいかは競プロ界でも宗派が分かれているようだが、個人的には(とくに初心者のうちは)どんどん解説ACしていけばよいと思っている。

 

競プロ典型 90 問 - AtCoder

競プロにおける典型的・教育的な90題。星の少ないものから順に解いていって、丸一日考えても分からないものは解説+実装例を読んでACしていくのがおすすめ。茶色だと☆3~4まで解けば十分。

 

AtCoder Clans

有志のリンク集。ユーザースクリプトが便利。初めて使う場合はスクリプトマネージャー(chromeだとTampermonkey)を入れるところからなので少しとまどうかもしれないが、ググると分かる。

 

 

Python

Our Documentation | Python.org

公式。定義を知りたい時は原典にあたりがち。

 

nkmk note

トピック別に機能の解説や実装例が載っている。網羅的。コンテスト中なども『Python ”任意の実現したいこと”』でググってこのサイトが出てきたらまず読む。

 

あのアルゴリズムはどこ? Pythonを使用してAtCoderの緑色や水色を目指す方に、30以上のアルゴリズムスニペットと100問以上の問題(ACコード付き)を紹介! - Qiita

様々なアルゴリズムの実装例。もちろん自力で実装できればなおよいが、とりあえず『△△を使えば~~ができる』ということを知っておくだけでも土壇場でACが取れたりする。