はじめに
12月13日のABC436で黄色になりました!!!!!
青色になってから黄色になるまでに2年以上かかりました。
その間、問題はそれなりに解いていたつもりでしたが、レートがなかなか伸びない状態が続いていました。
伸び悩む中で、
- 復習にしっかり取り組むようにしたこと
- 競プロに取り組む環境を変えたこと
の2つが、レートの上昇に大きく寄与したと感じています。
この記事では、青で長く停滞していた時期に、黄色に到達するため工夫した『復習』と『環境づくり』を紹介します。
特に、問題は解いているのに伸び悩んでいる人の参考になれば嬉しいです。
目次
精進の仕方(特に復習!)
ここでは、復習の話に入る前に、普段どのように問題を選び、コンテストに参加していたかを簡単に書きます。
練習方法
伸び悩んでいる時に、この記事に出会い、それ以降参考にして取り組んでいます。
- 解く問題を選ぶ時に機械的に選ぶ(黄色以下新しいものから)
- すごく難しい問題は飛ばす(赤diffはほとんどやってない)
- 解説を読んでACした際はどうすればできたかをまとめる(Notion/Anki)
- 苦手な問題を繰り返し見返す
NotionとAnki、苦手な問題を繰り返し見返す点については復習の節で詳述します。
ライブラリ整備などもやったのですが、面倒なものは人のをコピペしたものも多いです。
- データ構造の中身が曖昧でも困らないことも多い(必要になったらその都度勉強)
- 面倒でやらないより、雑でもいいからやったほうがまし(だと思います)
コンテストにたくさん出る
特にCodeforcesのコンテストに出るようにしています。発想寄りの問題が苦手だったのでその対策と、コンテスト慣れを目的としています。
Div.2辺りの問題の速度や精度が上がったのを感じました。(Masterになりました!)
また、AtCoderが不調でもCodeforcesが勝っていれば気分がいい利点も感じました。(両方だめだと悲しいです)
ARCについては、解けると嬉しいので基本的にRatedで参加していましたが、苦手な場合はUnratedにするだけでもレートは上がると思います。
私はARCが苦手なので、週平均でレートが10弱下がることを認識しつつも参加を続けていました。特にDiv.1は厳しいです。
結局のところ、コンテストに出るか、Ratedで出るかは、成長につながるかどうかよりも「楽しいかどうか」で判断するのが一番大事だと思っています。
レートの上下を楽しめるならRated、分の悪い勝負が苦手ならUnratedなど、ゲームとして自分が楽しいと思う形で参加するのが一番だと思います。
復習
この記事で一番伝えたいのが、この復習の話です。
青で長く停滞していた原因を振り返ると、過去に解いた問題を「使える状態」にできていなかったことが大きいと感じています。
この節では、私が実際に行っていた復習の考え方と、具体的な運用方法について説明します。
復習をする理由、復習に力を入れた理由
復習をする理由は、できなかった問題と同じようなテクニックを使う問題が出た際にできるようにするためだと思っています。
競プロは「死に覚えゲー」と言われることもあり、テクニックが身についているかどうかで、解ける・解けないが大きく分かれることが多いです(特にABC)。
私はコンテストや練習中にできなかった問題は、解説を読んで理解して自分で実装しACする、いわゆる解説ACを行っていました。しかしながら、数ヶ月経ってからその問題を見るとほとんど解くことができなかったのです!
これはその問題を通じて得たテクニックなどが使える状態になっていないことを意味し、改善するとレートの増加に大きく寄与するのではないかと思い、復習に力を入れるようになりました。
今振り返ると、過去に解いた問題を十分に身につけられていなかったことが、5000問近く解くまで黄色に到達できなかった最大の要因でした。
具体的な復習方法
行っている復習の流れは以下のとおりです。
- できなかった問題を解説ACし、Ankiに追加
- 新しい知識など、すぐに引き出せるようにしたいものはNotionにまとめる
- 毎日Ankiで繰り返し復習
以下Ankiについて簡単に説明した後、それぞれについて詳しく説明します。
Ankiについて
https://apps.ankiweb.net/
iOS/Android/PCアプリがあり、機能は制限されますがWeb版も使えます。(iOS版のみ有料です)
イメージとしては自動で復習間隔を調節してくれる英単語カードみたいなものです。
非常にカスタマイズが豊富で、復習間隔だけでなく、CSSで見た目もいじれる(らしい)です。後輩に聞いて始めたものの、基本の機能以外はあんまり使いこなせていません。
1. 解説AC後、Ankiに追加
解説を見て理解した後、自分で実装してACできることを確認します。
その後、Ankiのカード追加で表面に問題のリンク、裏面に「どうすればできたか」を一言追加します。こういうのがポイントかもみたいなのを書いておくといい気がしてます。
Ankiのノートタイプ(カードの種類)は「基本(表裏反転カード付き)」を使っています。
カードの追加はアプリ版で行うことをおすすめします。(私はPC版を使用)
私の環境ではWeb版で登録したカードはリンクが飛べませんでした。
2. 必要な知識はNotionにまとめる
Ankiは「思い出す訓練」、Notionは「参照する辞書」という位置づけで使い分けています。
問題を解く際に、必要に応じて引き出せるよう、下記リンクのようにメモをしています。メモの際は、解説のスクショを貼るだけにするなど、負担なくできるようにしています。
また、最近は他の記事を見れば良いものも、その記事のスクショを取って貼るようにしています。たまに、リンク先がなくなることがあるのでその対策です。
まとめ方はまだ悩んでいて、直近はScrapboxを試したりしています。
典型メモの内容は間違っていたり、変更される可能性があります。
3. 毎日Ankiで繰り返し復習
Ankiを使って、繰り返し復習することで知識や考え方の定着を図ります。
Ankiのカードの表面からリンクに飛び、「どういう発想で解けるか」が頭の中で再現できるところまで考察します。(実装の手前までやることが多いです)
5分くらい止まってしまうようなら解説を開きます。できそうな場合は30分ほど粘るときもありますが、0から考え直すようならすぐに解説を見ます。
できた場合は解説を確認後、裏面の「正解」や「簡単」を押し、できなかった場合は再度解説を読んで理解して、「もう一度」や「難しい」のボタンを押します。
復習の目的は、テクニックがすぐ出てくる状態にすることとしているので実装までは基本やりません(時間もかかるので)。
ただ、実装部分にポイントがあった問題は、カードの表面にメモしておき実装もします。また、完全に忘れていた場合などは解説を読んで再度実装もしています。
おまけ(1/2) AtCoder Daily Trainingについて
AtCoder Daily Training(ADT)を、私はABC学習のエンドコンテンツと呼んでいます。まずは直近200回分くらいをF以下まで埋めるのが優先だと思いますが、素早くそれらの問題を解けるかの確認として非常に有用だと思っています。
安定して60分でAllを全完できれば、ABCでも黄パフォを安定して出せるのではないかと思って取り組んでいます。
週に2回くらいを目安に、特にコンテストが少ないときは、バチャでやるようにしています。
おまけ(2/2) 復習がしんどいとき
復習は正直面白くないです(ADTはその点結構面白いです)。また、ある程度自分と同色+1色くらいの問題を解いて伸び悩んでから、復習は重点的に取り組むのがいいと思っています。新しい問題を解くほうが面白いし、解いた問題から学びをどんどん吸収できている状態ならば、復習よりもたくさん問題を解いたほうが強くなれると思うからです。
復習をするなかで面白くないだけでなく、しんどいことも結構あります。特に何回も見たのにできない問題に当たったときが一番しんどく、正気を保っているのが難しいです。
対処として、最近は音楽を聞きながらやることが多いです。音楽を聞きながらやるとしんどさが大分減ります。また、やりたくなくてやらないよりは、多少能率を落としてもやったほうがマシだと思ってやっています。
環境面での工夫
復習以外にも、取り組む環境そのものを整えることも重要だと感じました。
競プロを4年近く続ける中で、良かったものを2つ紹介します。
タブレットではなく紙を使って考察する
今年の夏頃から考察を、タブレットから紙とペンに切り替えました。
紙なら複数枚並べられるので、情報が整理しやすいです。考察が必要な問題が少し得意になった気がします。
また、タブレットでYouTubeを見る誘惑が減ったのも良かったです。
紙を使った考察デビューにあたって万年筆を使い始めました。別売りのプッシュ式コンバーター(インクを吸入する道具)を買って使っています。
2週間ごとにインクを補充する手間があるものの、ボールペンとは違った感触が面白く気に入っています。
立って競プロする
もともと夜のCodeforcesのコンテスト中に、寝ないようにするために始めました。始めてみると、立って参加したコンテストのほうが成績が良く、頭が回る気がするので日常的に取り入れました。最近は座ってやる方が珍しいです。
成績向上以外の効果として、肩こりが楽にもなりました。昔から、かなり肩が凝るため困っていたのですが、ここ最近はあまり気にならなくなりました。
立って競プロする際には、電動式のスタンディングデスクを使っています。数センチ違うだけでもやりやすさが大分変わるので、結構微調節してます。また、高さが変えられるデスクにしてから頻繁に高さを変えるようになったので、手動よりは電動式のほうがいいと思います。
これの色違いを使ってます。調べた感じダブルモーターってやつが良いそうです。注意点としては、20キロ以上あり1人だと組み立てがかなりしんどいので、組み立ての際は誰かに手伝ってもらってください。
コンディション作り
当たり障りない内容な気がするのですが、自分の周りの環境を整えるだけでなく、自分の中の環境を整えることも大切だと感じたので書いておきます。
よく寝る
8時間は寝るようにしています。寝不足だと頭が回らないというか、やる気がおきずダラダラ過ごしてしまうことが多いです。1時くらいに寝てしっかり睡眠を取るようにしています。
また、コンテストの前に仮眠を取ることも多いです。ABC(ARC)とCF間の30分などは特に良く寝てます。
目薬・栄養ドリンク
どちらも使ってみたら疲れが取れる感じがしたので続けています。
目薬に関しては、目が疲れると脳が疲れるらしいのでドライアイがあったこともあり効いているのかなと思います。目薬や栄養ドリンクだけでやる気が出るなら儲けもんだと思ってます。
栄養ドリンクは大学近くのスーパーで安く売っているこれが気に入っています。
脳が疲れないようにする
疲れてやる気が出なかったり、頭に鍵がかかったように考えられないことがよくあったのですが、原因を探ると、ゲームのしすぎやYouTubeの見すぎにありそうだなと思い当たりました。
全てを断つというのは難しかったので、とりあえず意識して時間を減らすことと、たまに1日デジタル機器を触らないといったデジタルデトックスをしたりしています。我慢するというよりは無駄にやらないという意識で取り組んでいます。
特に、YouTubeを見ながらゲームをすることもあったのですが、あまり良くないらしく、脳を破壊している感覚もあったのでやめるようにしました。
また、色の刺激が依存性に影響を与えるというのも聞くので、タブレットなどはフィルタをかけて色を制限したりもしています。ぼちぼち効果があるかなと思います。
問題を考える時間を増やす
机の前以外でも競プロの問題を考える時間を増やせると良い、といったことをXで見たのでやるようにしています。
競プロ脳(?)を作っていくことで、人間から競プロを解くマシンに近づけるのではないかと思っています。
終わりに
黄色になったときはとても嬉しかったので続けてきて良かったなと思っています。
また、入水記事でも書いたのですが、できる問題が増えていくことで、より一層競プロが楽しいと感じるようになりました。
私の中で遠い目標として、橙になってARCのwriterをやりたいというのがあります。一生かかっても橙にたどり着けるかは分かりませんが、楽しみながら精一杯頑張ろうと思います!
ここまで読んでくださりありがとうございました。少しでも参考になったり面白いと思ってもらえれば幸いです。








