はじめに
先日開催されたABC193で青色になることができました!
nullkaraとしては2020年の1月から初めて1年くらいでなっていますが、1回atcoderのアカウントを消していて、そっちは4か月やって水色止まりだったので実質1年半くらいかかりました。
もっというと、私が競技プログラミングに出会ったのは8年ほど前です。そう考えると、青になるまで8年近くかかっています。
この記事では、そんな私の自己満足な振り返りや青色になるために意識したこと、競技プログラミングに対して思っていたことを適当にダラット書くだけのものになります。
青色になるためにしたこと
コンテストに出て復習する、問題を解く
mustだと思います。
競技プログラミング強い人がよく「毎日問題解いてればxx色になれる」と言っていますが、正しいです。
虚無埋め(簡単な問題をACする)、解説AC(解説をみてACする)を許容するかどうかが人によって代わったりしますが、そんなこと考えてる暇があるなら取りあえず自己流で埋めた方がいいです。
私はnullkaraになってからatcoderで600問ほど解きました。(ほぼ虚無埋めでしたが)
Atcoder以外は解く解く詐欺をしていて、あまり解けていませんね…。
nullkaraの前世では、AOJ埋めをしたりyukicoder埋めをしたり軽く2000問は解いているかと思います。
これが多いか少ないかは分かりませんが、レートが上がらないと文句を言う暇があるなら虚無埋めでもいいので問題を解きましょう!
解けばレートが上がるかは分かりませんが、解かなきゃ絶対にレートは上がんないです。
特にコンテストに出て、解けない問題は復習する。
これは凄く大事です。
私だけかもですが、コンテストで解けなかった問題を復習したときの学習定着率は高いです。
ABCなんかは全問、解説見てでもACするようにしています。
楽しむ
これもmustです。
というか、競技プログラミングやらなければ死ぬわけでもないので、楽しくなければ辞めた方がいいと思います。
レートや順位がつくので色々余計なことを考えてしまいがちですが、私は楽しむことに集中しました。
私は競技プログラミングをオンラインゲームと捉えています。
他人に邪魔されない、自分の取り組みだけで競えるパズルゲームって他にあんまりないんですよね。
ぷよぷよなんかは大連鎖組んでるとお邪魔が降るじゃないですか、ああいうのが少し苦手です> <
レートが下がれば悔しいですし、最近はコンテスト開始5分前は心臓ばくばくしたりと少しアレですが、そういったところも含めて楽しいかなと思います。
逆に楽しくないなと感じればAtcoderからは距離を取るようにしています。
最近はSteamのゲームが楽しいので、Atcoderの問題を解かずにそっちばっかやっています。
そんな感じで気楽にやればいいのかなと思います。
他人を気にしない
“はじめに”でatcoderのアカウントを消したと書きましたが、これは他人を気にした結果です。
当時、情報系初心者が勉強がてらにAtcoderを初めて、半年くらいで青になった方がいました。その人は、その後googleに入社したくらいのガチ天才なのですが、自分が目標としていた青にあっさり行かれてバカらしくなってアカウントを消していました。
結局戻ってきてnullkaraとして再開したのですが、その時決めたことは「snsで競技プログラマーを自分からフォローしない」です。
競技プログラミングの情報はともかく、競技プログラマーの情報はできるだけ遮断するようにしました。
私はTwitterなんかはリツイートやいいねも非表示にしています(これは、r-18やそれに近い絵が出てくるのが鬱陶しいという理由の方が大きいですが)。
この手のゲームは他人を気にしすぎると楽しくなくなってしまいます。それで燃える戦闘狂の方もいますが、私は萎えるタイプの人です。
競技プログラマーをなるたけフォローしない戦略は成功で、自分のレートにだけ一喜一憂できるようになりました。(コミュ障だからフォローして交流できない訳ではないですよ!ホントに> <)
競技プログラミングに限らず、SNSを見てると変にバイアスがかかりやすいです。
数か月で青になれる人なんて稀です。多くの人は青になれずに引退しているかと思います。
数か月で青になれる人の多くは、有名校出身だとか数オリ出身だとかそんな人ばかりです。そんな人と比べていても意味ないかなと思います。(普通の中高大を卒業して、特に実績のない私にとって)
ただし、他人と比べて落ち込まない性格ならSNSでのつながりは持っていた方が絶対いいですよ!
競技プログラミングって、未だに秘伝の技術みたいなのが多いイメージがあって、そういうのはツヨツヨな人から仕入れるしかないです。
そういった情報を貪欲に仕入れている人の方が伸びは早いはずです。
ブログを始める
ブログでなくてもいいですが、コンテスト後(問題解いた後)に、何かに纏めて発信するといい感じです。
これが1番手軽にできるのがブログかなぁと。
私の場合、検索妨害になりたくないのでコンテストの参加記は全問丁寧に書こうとしています。(ごめんなさい、arcは書けてないです> <)
実際に丁寧かは置いておいて、書こうとする中で考えを整理したり言語化する作業がとても大事かなと思います。
特にパズル問題なんかは、感覚や未証明で解いちゃうことが多いので、一度振り返って言語化して考えをカッチリ固める作業は大事です。
類題が出てきたときに、対処がしやすいです。
意識高い方がoutputが大事とよく言っていますが、あれは真実かと思います。
outputのあるなしでinputの質や定着率も変わってくるように思えます。
ブログはちょっと…という方は、手元のノートに纏めることから初めてはいかがでしょうか?
Atcoderがいやになったら他をやってみる
競技プログラミングのサイトは様々です。
コンテストを開いているところだと、
過去問が置いてあるところだと、
AIZU ONLINE JUDGE: Programming Challenge (u-aizu.ac.jp)
とかあります。
同じ競技プログラミングでしょう?となりがちですが、問題傾向が全く違います。
なのでAtcoderは合わないけどCodeforcesが合うとかもあるかと思います。(個人的に問題はCodeforcesの方が好き)
なのでAtcoderが嫌になれば他のサイトの問題を解くことを考えて良いと思います。
最近はSteamなんかで競プロっぽいゲームがあったりしますし、どんどん楽しいほうへ流れていきましょう!
Atcoderの色に関して
よく色に関して色々言われています。
この色はどの程度すごいとかですね。正直、今のatcoderだと灰色でもすごいです。
ABC193だと
この問題を灰色上位の方の50%が解けてしまいます。
この問題、指数の性質に関して考慮しコードに落とし込む必要があります。
問題を理解し、数学的に考え、バグのないように実装する。
これを、2hほどの時間でやるのは中々ハードですし、灰色安定を目指すなら20m~30mで解かないといけません。
正直、これができるならプログラマーとしては十分だと思います(少なくとも、競技プログラミング的な方面では)。
なので、プログラマーとしての評価なら
黒 やる気があってすごい!
灰 ふつうに頭よくてすごい!
茶 めちゃくちゃ頭よくてすごい!
緑 天才では???
水~ そんな知識覚えてどうするの?
的な感じかと思います。誇張気味感はありますが、こういう評価は誇張くらいでちょうどいいかと思います。
※しつこいようですが、あくまで競技プログラミング方面での評価です。私みたいに青色でも複数スレッドの排他でやらかしたり、1つのバグを潰して2つバグを増やすやつもいます。
これから
次の目標として黄色になるわけですが、多分目指しません。
自分の頭では青が限界だと思っているからで、無理にレートを上げるために勉強をしたくもないからです。
なので競技プログラミングは卒業….としたかったのですが、長らく続けた趣味なので離れるわけにもいかず。
これからは解説ACでもいいので手あたり次第いろんな問題に解きながらコンテストにも顔を出す感じで良いかなと思っています。
今年はABC全埋めくらいを目標にしたいですね~。
さいごに
この記事で伝えたかったことを書きます。
楽しみましょう!!!!
義務でも何でもないんです。無料で遊べる楽しいゲームとして楽しみましょう。
XX色になるためには~という話はたくさんありますが、一番大事なことかと思います。
あと、
自分を凄いと思いましょう!!!!
XX色だから~とか、あの人と比べて~とか、卑下する必要はありません。
週末にプログラミングやってるだけで凄いです。
おそらく、次のABCで水落ちしそうですが変わらず楽しみながら続けていきたいなと思います。
コメント