AtCoder青色になりました

本日3月6日のABC194にてhighestパフォ2296でAtCoder青色になりました! 良い区切り目だと思うので記念記事を書きました。

自己紹介

現在横浜国立大学理工学部に所属する学部2年生です。 主にAtCoderとCodeforcesのコンテストに参加します。 学部1年生の夏から競技プログラミングを始めたのでここまでに1年と6ヶ月を要しました。 特徴としては競プロを通してプログラミングを始めたこと, 正直数学が得意でも好きでもないこと等があると思います。(最近は数学頑張っているつもりですですが…)

初期スペック

地方県立高校から横浜国立大学に入学しました。
センター試験の数学が平均90点とれるくらいの数学力でした。

初参加

「プログラミング勉強したい」という意識高い系のノリで2019/07/07にABC133
に初めて参加しました。成績はA1完でパフォ139でした。また, 初参加から5回の平均パフォーマンスは260でした。思った以上に奮わず, 化け物だらけの魔界に入ってしまったかのような気分でしたが, ここから沼にはまっていきます。

競技プログラミング部への入部

せっかくあるなら入ろうとの考えで2020年1月に横浜国立大学競技プログラミング部に入部しました。優秀な先輩ばかりで本当に刺激になります。丁度本日もアルゴリズム講習会→コンテストで最大フロー, 最小カットを学びました。
・毎週2度のコンテスト→先輩による解説
・質問を投げるとすぐにだれかが答えてくれる
・ICPCへの参加 etc…

100問精進

2020年2月頃から100問精進を始め, 春休みを通して2ヶ月程度で一通り終わらせました。これを通じて体系的に水色程度の知識を得ることができた気がします。

PythonからC++への転向

2020年4月頃に先輩からの助言を受け, PythonからC++へ転向しました。
以下のようなメリットとデメリットを感じました。

メリット
  • 多数派の恩恵
    解説記事等の充実度の大きな差があります。
  • 連想配列map
    解説でmapを使っている問題に出会うとかなり苦痛でした。
  • 理論上正答できない問題が無くなる
    時間制約上, 通すことの難しい問題はあります。 意味の無い定数倍高速化に時間を費やしたり, 時間をかけてそれ以上の高速化ができずに正答できないときは苦しいです。
  • 他のコンテストサイトに出れる
    CodeforcesではC++でも時間制約の厳しい問題が割とあったと記憶しています。
デメリット
  • パフォーマンスはあまり変わらない
    たまにC++でのみズルができますが, そのようなケースは少ないです。
  • 定数倍を重ねた雑なアルゴリズム設計をしがちに

水色になる

2020年7月のエイシングプログラミングコンテストでAtCoder水色になりました。

青色になる

本日3月6日, AtCoder青色になりました。
ようやく簡単な典型知識が体に染み込んできた感覚があり, 今までに解けなかった水diff程度の問題に対しても明らかにアプローチの仕方が変わっていると感じることがあります。現在までの解いた問題の数は以下のとおりです。

今後

現段階では黄色は目指していませんが, 現段階では青タッチに過ぎないので青安定までは行きたいです。競プロはあくまで趣味なので適度にしつつ, 数学もやりたいと考えています。最近は4月の数検1級に向けた勉強と教習所・バイトに追われています。

反省

実は今日のコンテスト, Eを解き終わってからFのAC数の少なさからベットでゴロゴロしていました。。。流石に良くないということで, 戻ってくる訳ですが, 普通のdpですね。。。こういうのは本当に良くないです。

現在の考え

早解き

水色になるまでは早解きはあまり好きではなく, 他人より一問多く解くことを意識していました.しかし, そもそも早解きしないと後ろの問題に多くの時間を割けないことや, そもそも早解き力は上げようとしてもなかなか上げられないこと等から今では早解きは必要なスキルだと考えています。

土台の大切さ

適正diff未満の問題を如何に高速に解けるかが非常に大切だと思います。 基礎部分を疎かにすると中々上に上がれないと痛感します。

才能

自分より強い人ほど自分よりたくさん解いているので, 気にしていません。個人的には才能というよりは, 人生で触れてきた数学的な教養が大切だと感じます。

楽しむ

Nosub防止目当てで提出したり, コンテストに寝坊した結果残り10分でABCに参加したりして非常に低パフォをとったことがあります。 結果レートが-100され, 取り戻すのにも苦労しました。 当たり前ですが, 著しくモチベーションが下がるので良くないです. 自分に優しく楽しみたいです。

精進の仕方

○分経ったら解説を読むというようなルールは無いです。 こうじゃないかというアイデアが尽きない限りは考え続けるようにしています。
ただ一問に数時間かけるのは時間的効率は悪いので他人には薦められませんが。
また, 実装を少し変えるだけ等の場合を除いて基本的に解説ACはしていません。これは実装よりアイデアが本質であるという考えと単に作業じみて面倒くさいという怠惰さに基づいています。