6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

プログラミング初心者がAtcoderで水色になるまでの話

Posted at

#はじめに#
こんにちは。Qiita初記事のSotaUNです。先日、ABC179で入しました。
スクリーンショット 2020-09-21 22.29.39.png
スクリーンショット 2020-09-21 22.32.17.png
ABC178で初めてパフォを出し、+93した後、ABC179で初パフォを出し、+150しました。
Atcoderを始めてから (というかプログラミングを始めてから)10ヶ月弱の道のりだったので、単純に嬉しいです(^_^)。(ただ、これからパフォが安定するか心配...)
#になるまで#
ここは、を解くだけでも得られることが多いので、1日1問ずつとかを着実に解いて、新しい知識を吸収していけば、自ずと伸びてくるはずです。
私の場合、1ヶ月少しで入したのですが、問題を解くのをサボっていたら落ちしました。コンテストで焦ってペナを連発することもあったので、気分が良くない時はお休みしましょう☕️。気を取り直して問題を解き進めたら、またに戻ることができました。
#になるまで#
したのはAtcoderを始めてから半年後くらいです。c++の基礎文法を勉強し始めて、割とすぐににはなったのですが、それからレートが伸び悩み、"精進"というものを始めました。
私は、自分の色より1,2色上の問題を解き進めるという方法をとりました。2色上の色の問題は、解説を見ないと解けなかったのですが、それでも数をある程度こなしていくと、自力で解けるようになっていきました。
,とかの問題は、暇なときに埋めれば良いので、まとめて何問も解くというようなことはしていませんでした。
私の場合、ABC164(になる2回前)にはコンテスト中に色が解けるようになりました。
このくらいの時は、まだ本格的なアルゴリズムの勉強はしていなくて、

  • BFS
  • DFS
  • 逆元,繰り返し二乗法
  • bit全探索
  • 基本的なDP
  • 累積和

ぐらいしか知らなかったと思います。最初は難しいですが、とにかくコツコツやるのが大切です。
あとは、問題を解くごとに新しいSTLの機能がどんどん出てくるので、その都度覚えていきました。
また、これらのアルゴリズムの実装やSTLの機能はメモ書きとしてGoogle Keepに残しています。
Google Keepは使いやすくはないのですが、自分のライブラリをどこに保存しようかという時に、手っ取り早かったので、使い始めました。

#になるまで#
したのはになってから5ヶ月後くらいです。
まず、レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【中級編:目指せ色コーダー!】は絶対に読むべきです。ここにほぼ全てのことが書いてあります。大変お世話になりました。
私は、までに覚えていたアルゴリズムに加えて、

  • 二分探索
  • いろんなDP
  • ダイクストラ
  • ワーシャルフロイド
  • クラスカル
  • Union-Find

を覚えました。
最初はこの量のアルゴリズムを見ておげ!となったのですが、3日に1つとか頑張ってやっていくといつの間にか全部できるようになります。

###グラフ系###
私は結構実装でつまずきました。c++の知識がそもそも少ないのが原因だと思いますが、他の人のソースを半写ししたりして実装しました。自分で書いたソースコードのチェックは、AOJに基本問題が大抵載っているので、そこで行えます。
最近のABCでグラフ系のアルゴリズムを使う機会は少ないと思っているのですが、出たら考察は少なめなので、覚えておくと得します。また、JOIの過去問には最短経路問題とかが結構あるので、練習になります。参考までに、自分が参考にしたサイトを載せておきます。

###数学系###
色くらいまでの数学系は、基本高校数学で完結するので、覚えておくことは少ないはずです。
私は、○進ハイスクールで勉強しました。
例えば、組み合わせの考え方などはパターンが決まっているので、二項係数の実装と繰り返し二乗法の実装を覚えた後は、困ることはなくなりました(困ってないはず)。

  • LCM,GCD
  • 組み合わせ
  • 確率
  • mod
  • 幾何系の基本定理(余弦定理など)

###実装系###
実装系といっても80行くらいで収まるものがdiff以下の問題には多いと思いますが、

  • BFS:queueの扱い方
  • 二分探索:イテレータの扱い方
  • 再帰:頭が混乱
  • dp:遷移式が多い時

などは最初の頃はとても苦労しました。
これらは慣れるしかないと思うので、面倒くさがらずに頑張りましょう(自分自身への戒め)。
dpを使う問題はJOIに結構あるので、是非解いてみてください。

#さいごに#
ここまで読んでくださった方、ありがとうございます。少しでも役に立っていればうれしいです。
最後に、1日最低1問解くことが大切です。時間がある時はdiff以上とか、時間がない時はdiffとか、とにかく1日1問といてください!!!
AtCoder Problemsのuser pageには連続何ACしているかのカウントがあり、モチベになります。まとまった時間がある時には、バーチャルコンテストをAtcoder Problemsで開いたり、Atcoderの過去のコンテストでバーチャル参加をするのもおすすめです。
次は、になるまでをかけるように、頑張ります!

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?