2022.08.23
STAFF BLOG
スタッフブログ
TECHNICAL
テクログ
はじめに
AtCoderで解答を早く提出する所謂早解きは、順位を上げるために必要な要素の一つです。
AtCoder Beginner Contest 265を例に、ABCDの4問を完答した人のパフォーマンスを比較してみます。すると、最も遅く解答した人が784で、最も早く解答した人が1463でした。これは色で表すと、784が茶色で1463が水色です。つまり、同じD問題までを解いた人の中でも、2色分のパフォーマンス差が生まれていることになります。
このことから、解答を早く提出することは、パフォーマンスを高める上でとても大切なことが分かりました。
では、解答を早く提出するためにはどうしたらよいでしょうか。ここでは、そのためにすぐに実践できる工夫を7つご紹介しようと思います。順番は個人的なオススメ順です。
※ちなみに筆者は水色コーダーで、実際のコンテストでも活用している方法になります。
解答を早く提出する工夫7選
サンプルケースの確認はAtCoder Easy Testで
AtCoder Easy Testとは、入出力例のテストを自動で行ってくれるスクリプトになります。テストをした後は、
- 1つでもACでないテストケースがある場合は解答を提出しない
- 全てのテストケースがACの場合はそのまま解答を提出する
までやってくれます。これまで手作業でしていたテストが自動化されるため、大幅な時間短縮が見込めます。
AtCoder Easy Testについて詳しくはこちら。スクリプトのインストールはこちら。
コンテスト開始前にA問題のページを開いておく
コンテストが開始した直後はユーザ全員が問題のページにアクセスするため、ページの読み込みに時間がかかることがしばしばあります。
それを回避するためには、問題のページを経由せず、直接A問題のページにアクセスする方法が有効です。
https://atcoder.jp/contests/abc{コンテスト番号}/tasks/abc{コンテスト番号}_a
A問題のURLは上記の形式であることがほとんどです。そのため、あらかじめこのページを開いておき、コンテスト開始と同時にリロードをすれば、他の人よりも早く問題にアクセスすることができます。
解答の結果を確認しないで次の問題へ行く
解答を提出してから結果が出るまでには少し時間がかかります。そのため、解答を提出したらすぐに次の問題へ行くことで時間を短縮することができます。
結果の確認は以下のどちらかのタイミングで行います。
- 次の問題の解答を提出したとき
- 次の問題でパッと解法が思いつかないとき(問題を解いている途中でチラッと確認する)
ファイルを用意しておく
例えばA問題~E問題など、自分が解くであろう問題分のファイルをあらかじめ用意しておくと、ファイル作成の手間が省けて時間を短縮することができます。ひな形となるテンプレートを用意している方もいると思うので、それをコピーする手間も同時に省くことができます。
コンパイルを一度しておく
VSCodeなど自分の環境でテストをしていて、かつコンパイル型の言語を使用している人限定です。体感ですが、1回目のコンパイルは少し時間がかかるような気がします。そのため、空のファイルでよいので1度コンパイルをしておくと2回目以降のコンパイルが速くなり、時間短縮につながると思います。
紙とペンを用意しておく
コンテスト中にメモを取ったり、計算をしたり、図や式を書いたりしている人も多いと思います。コンテストが始まってから紙とペンを取りに行っていると時間がもったいないので、あらかじめ用意しておくと無駄な時間をかけずに済みます。
タイピングの練習をする
「すぐに実践できる」ではないじゃないかというご意見、ごもっともでございます。しかし、タイピングが速ければ解答までの時間が短縮されるのもまた事実です。
プログラミングでは記号の入力が多く要求されるため、記号の入力を練習することが有効だと思います。そのための練習ソフトとしてタイプウェルオリジナルがオススメです。「小文字のみ」、「大文字小文字混在」、「すべてのキー」、「数字」の4種類のモードがありますが、「すべてのキー」というモードで記号の練習をすることができます。
おわりに
今回はAtCoderで1秒でも早く解答を提出するための工夫7選をご紹介させていただきました。
- サンプルケースの確認はAtCoder Easy Testで
- コンテスト開始前にA問題のページを開いておく
- 解答の結果を確認しないで次の問題へ行く
- ファイルを用意しておく
- コンパイルを一度しておく
- 紙とペンを用意しておく
- タイピングの練習をする
もちろん解答を早く提出できるようになるためには、たくさんの問題を解いたり、様々な知識を身に着けたりすることが必要です。しかし、現状の持てる力で最大のパフォーマンスを発揮することも大事だと思います。ご紹介した内容が少しでもお役に立てば幸いです。