競技プログラミング
実際の現場では、計算量が遅いもののほうが速いことも多々あります。
ハッシュ値を計算している間に50くらい線形でなめられるでしょう。
メモリーヒエラルキーを意識することも大切です。
クイックソート
最悪計算量に近いときにスタックオーバーフローを起こすので、短い方から再帰して、長い方は末尾再帰最適化することなど、いくつかの常識があります。
バックスラッシュを含む文字列をリテラルで書く方法は不要な知識になっているのか、かなり書けてもできない人をよく見ます AC 1516問。Pythonのshortest 434問(その後、誰かに記録更新されているかは把握できておらず)
現時点でAC数ランキング3桁番に突入。AtCoderは会員数が40万人ほどいるらしいので、これはAC数上位0.25%に属する。
つづく
https://pbs.twimg.com/media/FlT7NtBWIAQaXP1.jpg
スレッドでの実践
解説動画は原則観ない
時間の無駄
解説動画は観ないのが原則だけど、解説読んでわからない時は、動画見て解説と違うこと言ってないかだけ確認する。
upsolve(解説見ての提出)はしない。
(解説見ないと解けない問題はそもそも自分のレベルに合ってない)
upsolveはしないけど、解けない時に解説は見る。
どの分野の知識が必要なのかを確認するため。
同じ分野の問題をまとめて解く
(断片的にいろんな分野に手を出すのは学習効率が悪い)
躓いたら、その分野の教科書を読む
(グラフ理論、数理最適化等…)
解いた問題はスプレッドシートに問題URLや概要、必要な知識、ジャンルなどを記入しておく
(あとで再度チャレンジできるように)
難度の低い順にやっていく。(自分のレベルに合ってない問題をやっても時間効率が悪い)
パソコンの前で考えない。
考える作業はノートにメモするなりしておいて、移動中や食事中など隙間時間で行う。
パソコンの前ではコーディング以外しない。
手がとまっているならそれは考察などが足りないからで、パソコンの前で手をとめて考えない。
つねに時間効率を最大化することを意識する。
変なこだわりを持たない。最大化したいのは時間効率(時間あたりの学び)であって、変なこだわりを持つと時間効率が下がる。
時間効率が最大できると思える状況なら、解説動画も見るし、upsolveもする。