Mister雑記

競プロやります。

AtCoderで黄色になるまでにやったこと

AtCoderを始めてから11ヶ月、ついにレーティングが黄色になりました。年内は厳しいと思っていたので、自分でもとても驚いています。

f:id:misteer:20181103150930p:plain

というわけで恒例の「なるまで記事」を書くことにしました。前回の「青になるまで記事」は自分でもまとまりがないなぁと思っていたので、今回はこちらの記事のスタイルをパク参考にし、時系列順に振り返ってみます。

目次

AtCoderを始めるまで(〜1月)

そもそも私がプログラミングを始めたのが2017年の4月、大学に入って間もなくでした。

某ロボットサークルに入った私は、人生初めてのプログラミング言語としてC++を叩き込まれました。他の言語の構文を知らないのでC++が難しいのかもよく分からないまま、11月頃には初歩的な構文は一通り習得しました。 ただサークルでは回路屋だったので、プログラムをゴリゴリイジるようなことはあまりしませんでした。

アルゴリズムに初めて本格的に触れたのは、10月から始まった大学の講義「アルゴリズム入門」です。Rubyでソートや簡単な動的計画法などを実装する講義でしたが、メインがプログラミングに触れることだったので正直内容は薄めでした。それでもプログラムを書く楽しさを知る一因となったのは間違いないです。

緑になるまで(1〜2月)

そんな私がAtCoderに登録をしたのが、確か2018年の正月です。何がきっかけでAtCoderの存在を知ったのは自分でも分かりませんが、帰省中の暇つぶし程度の感覚でちょっと問題を解いたりしました。

それから4回コンテストに出場して緑になりました。多分AtCoderを始める前から自力は緑レベルだったんだと思います。

f:id:misteer:20181103144415p:plain

ということで私がこの時期について話せることはあまりありません。ごめんね。

水色になるまで(2〜3月)

それからABCで2回に渡ってレートが停滞します。ちょっと悲しい時期ですが、D問題が解けてないので致し方なしです。

一方で3月の頭頃からAtCoderの過去問埋めが加速し、3月中に100AC弱したりしました。

それで問題に慣れたのかは分かりませんがそれ以降調子の良い回が続き、AGC022で爆発してようやく水色になることができました。この頃からAGC芸人としての頭角が現れていますね。

f:id:misteer:20181103144443p:plain

ちなみに私は水色になるまではずっとABCに参加していました。Cでもなぜ解けているのかよく分かっていなかったレベルなので当然と言えば当然です。実際水になってからの初ARCでも、安全を優先してABCに出るか悩んでいました1

個人的には「Cならまず落とさない、Dも五分五分で通る」というレベルならARCに出るくらいで、緑の間に無理してまでARCに出る必要はないと思っています。

余談ですが、3月末に某ロボットサークルは辞めました2。これが後の暇に拍車をかけることになっています。

青になるまで(4〜5月)

この頃から大学で新学期が始まったのですが、1年の頃に比べてかなり講義が減り、それはもう暇でした。というわけで精進のペースが爆発的に加速します。

f:id:misteer:20181103144517p:plain

上はAtCoder ProblemsのDaily Effortですが、4月から6月にかけてエグいことになってるのが分かるかと思います。一番多い日で50問解いてます。

なぜ1日でこれだけの問題を埋められたかというと、講義中にも精進していたのもありますが(おい)、主にABC-A,Bなどの下埋めをしていたためです。つまり見た目ほど為になる精進はしていません。それでも様々な問題パターンを知り、何より精進の習慣がついたという点では決して無駄ではなかったと思います。

その流れでABC-Cも苦戦しながら全て埋めました。古い方に厄介な問題が集中していたのがしんどかったです。

あと直近にAGCがあったのでAGC-A,Bも埋めました。こちらは普通に手強かったです。

それが功を奏してか、CDを早く通せるようになったのと2回のAGCが上手いこと噛み合い、2ヶ月で青になることができました。

f:id:misteer:20181103144556p:plain

青はAtCoderを始めた当初の大きな目標だったので、Twitterではめっちゃ喜んでます。リアクションもたくさん貰えて嬉しい限りです。

2つの変化

この頃から、競プロにおいて個人的に2つの変化がありました。

まず1つ目は、AtCoder以外のサイトにも手を出し始めたことです。AOJ-ICPCやらCodeforcesにも手を出し、後者では青になっています。

どちらもAtCoderとは異なり実装が重い問題が多いので、良い精進になると思います。特にCodeforcesはコンテストの開催頻度がそれなりに高いのでモチベ維持に役に立つと思います。ただし開催時間が非健康的なのと、Hackシステムで精神がやられがちなので注意が必要です。英語については諦めて勉強しましょう。

そして2つ目は、Twitterで競プロerとの繋がりが増えたことです。この頃から競プロerのフォロワーがとても増え、人々の精進が目に見えるようになりました。それに加えて、上のように成功に対してリアクションが来るのが大きくモチベに繋がりました。あと頭おかしい面白い方が多いので、ツイートを見ていて楽しいです。

「モチベが続かない」という方は、競プロerを探してフォローしまくるのもオススメです。ただ変態的な伸びをする人も少なからずいるため、そういった人々と比べて落ち込まないように注意する必要はあります。

黄色になるまで その1(6〜7月)

青になれたは良いものの、当然ながらここからレートを上げるのがとても厳しくなります。それでもAGCで成功を積み重ねて、なんとかレートを伸ばしていきました。

f:id:misteer:20181103144643p:plain

この頃には既に「ARCでコツコツ伸ばしてAGCで爆発させる」というスタイルが定着しつつありました。一方でAGCでの成功率が高い理由が自分でも分からず、一抹の不安を抱えてもいました。

おまけに、Codeforces紫もこの時期に達成しています。

ブログ始めました

そしてこの時期からの大きな変化として、解説記事を書き始めたことが挙げられます。まさにこのブログですね。

「解説記事なんて書くだけ時間の無駄だろ」と思っていましたが、いざ書いてみると上手く説明するために解法や実装が洗練され、気づいていなかった注意点にも目を向けるようになりました。特に実装面における改善は大きいものがあったと個人的に思います。

とはいえ記事を書くにはそれなりに時間がかかるため、最近はあまり書けていないのが残念なところです。簡単にイラストを描けるツールがあればいいのですが......。

黄色になるまで その2(8〜10月)

7月中旬以降は主に2つの理由により競プロモチベが大きく落ちていました。

1つ目は、6週間にかけてAtCoderのRatedコンテストがなかったことです。国際大会3が集中していたため致し方ないのですが、やはりレート上昇が最大のモチベ源なのでどうしてもモチベは落ちます。

さらに(個人的にはこちらの方が問題だと思うのですが)、その後開かれたARCが2回連続でD問題に700点が置かれるという異常配点だったのが追い討ちをかけました。今後は正常な難易度に戻ることを願って止みません。

f:id:misteer:20181103144727p:plain

そして2つ目は、過去問で簡単に解ける問題がほぼなくなったことです。これは本来良いことなのですが、ACを取れるペースが格段に落ちるためモチベは保ちづらくなります。解説を見るタイミングというのも大きな悩みのタネで、その辺が大きな精神的負荷になっていました。未だにいつ解説を見るべきなのかがよく分かっていません。

↑こんなことを言っていますが、もちろん解ける問題はまだまだありました。

黄色になるまで その3(9〜10月)

そんなこんなで長らく停滞をしていましたが、ある時期からAtCoder Scoresを下から埋め始めました。主に残っているのは癖がある企業コンの問題ばかりでしたが、それでも400点以下は全部埋めました。それが発端となり、競プロのモチベが回復し始めました。

それが功を奏したのかは分かりませんが、Tenka1 Programmer Contestで人生初の赤パフォという大爆発を起こし、一気に黄色に届いてしまいました。正直自分が一番驚きましたし、未だに黄色になれた実感がないです。リアクションもめちゃくちゃ来て4、黄色の凄みを実感しました。

f:id:misteer:20181103144821p:plain

https://twitter.com/mistter_gp/status/1056181873070661637

ちなみに黄色になれた時点で解いた問題数ですが、以下の通りAtCoderで900問強、他のサイトを入れたら多分1200問程度かと思われます。その半数近くが虚無埋めなので、黄色にしては少ないんじゃないかなぁという気がしますね。

各種コンテストの埋め具合は以下の通りです。

f:id:misteer:20181103144850p:plain

橙になるまで(11〜?月)

こんな感じでAtCoder黄色という大きな目標を達成できたわけですが、正直黄色にしてはまだまだ実力不足という気しかしていません。Codeforcesも青と紫を行ったり来たりという状況なので、そちらも早く黄色(薄橙?)に乗せたいところですね。

何はともあれ、当面の目標はAtCoder橙となります。達成するのがいつになるかは検討もつきませんが、そのときは今回みたいに記事を作る予定です。

というわけでここまで読んでいただきありがとうございました。それではまた「橙になるまで記事」で会いましょう。


  1. この回はDが700だったからというのもあります。

  2. 今は某謎解きサークルと某プログラミングサークルに所属しています。

  3. GoogleCodeJamTopCoderOpenなど

  4. 手違いでこのツイートを消してしまったため今はアクセスできません。悲しい。