プログラミングの基礎文法力を上げると良い
だいたい競技プログラミングにおいてレートを上げるのに効くのは、使える道具を増やすか速解き力をつけることである。
速解き力について人はなんとなく苦手意識を持ちがちだが、これはだいたい「焦って解きたくない」という誤解に基づく(私もそうだった)。しかし実際、速解き力とは焦らずにプログラムを書く能力であると思う。したがって、使える道具の数によらず、常に速解き力は鍛えることができ、次に使えるようになるべき道具が手に余るようであれば速解き力に目を向けたほうが良い。ある程度速解き力がつくと次の道具を身につける余裕も出てくる。
速解き力についての苦手意識その2が、これが「慣れ」によって得られるものであるから、というヤツである。確かに「慣れ」は重要であるのだが、そもそもどうやれば速く解けるのか、ということを理解していないのに「慣れ」が生じることはなく、ここにあまり伸びる余地はない。タイピング力を鍛えるのもそこまで重要ではない。
で、手っ取り早く速解き力を上げる方法がプログラミングの基礎文法力を上げることである。だいたい基礎文法力がないプログラムは、無駄に長い。試しに自分の昔の提出なりレートの低い他人の提出を見てみると、無駄なことを書いてあることがわかると思う。今まで書いていた「プログラムの書き方」を短くするだけなので高度な数学能力は必要なく、「なんとなく」で済ませていた文法に目を向けるだけである。
コンテスト後は解説を読み、提出したプログラムの書き直しをするとよい。理解していたとしても本番で実践できているとは限らず、見直すことで無駄が見つかることも多い。
以下、C++を使う上で自分が意識できていること。