Go to list of users who liked
Share on X(Twitter)
Share on Facebook
茶色になるまで1年かかったうさぎさんの入緑記事
Hello World
こんにちは!
早起きが得意なうさぎアイコンの人こと、Un_titledです。
このたびAtCoderで入緑しました!!
緑になるまでの道のりを記事にしようと思い、私のなけなしの国語力を総動員しております。
よければ最後までお楽しみください!
目次
書いてたら想像よりかなり長くなってしまいました…
時間がない方は興味のない部分を飛ばすことを強く推奨します。
簡単に自己紹介・スペック
そのへんにいる高校生です。競技プログラミングは中3から始めました。それまでプログラミングをやっていたとかではなく 、何の言語も使えない・やったことないの完全未経験から始め、今に至ります。
入茶までの道のりは、私の入茶記事からどうぞ!
入茶時点での能力としては
- ABCのA、Bの2完は安定していた
- Cはわりと解けておらず、早解きのみでレートをのばしていた
ような感じだったために、再入灰するという悪夢を見ました。あれは本当に精神的にきつかった…。
競プロの文脈で「数学力」が言及されているのをみかけるので、ここでも少し言及しておきます。
高校数学は入茶前に全て履修済みです。(青チャートレベルです。2Bまでは青チャートの巻末まで全てとけますが3Cは例題レベルしかとけません。)
ただ数学の思考系の問題が得意というわけではありません。
競技数学とかはまったくやっていませんが、受験数学はそこそこできています。(難関高校の数学を解いたりしていたため)
得意分野は式とかグラフで、苦手分野は図形全般と統計です。
要は、競技数学で上位に食い込むような天才ではないよということを言いたかっただけです。
緑になるまでなにをやった?
今回の記事のメインディッシュです。
ざっとこんな感じだと思います。
入緑時点のProblemsはこのようになってます。
APG4b
食わず嫌いをしていた構造体らへんをちゃんとやりました。
(これには理由があって、Union-Find をやろうと思ったときに、クラスが使えなかったからです。)
茶色になるまでにAPG4bを一周終わらせることを強く推奨します!
かけない!という状況になってからやり直すのはかなり非効率な気がします。
一回見ておいて、わからなくなったら戻るのが一番です。
鉄則
とりあえず一周見ましたが、やってないものもあります。
章ごとの習得度合い・まだできないもの一覧
「できないもの」は、理解はできても何も見ずに書ける自信がないものを挙げています。
| 章 | アルゴリズム名 | どこまでやったか | できないもの |
|---|---|---|---|
| 1 | 基礎・全探索 | すべて | なし |
| 2 | 累積和 | すべて | 特になし |
| 3 | 二分探索 | すべて | 答えで二分探索 |
| 4 | DP | すべて | LIS、区間などたくさん |
| 5 | 数学 | 一通り見た | 必勝法以降 |
| 6 | 考察方法 | 読んだ | 全体的に懐疑的 |
| 7 | ヒュ | 皆無 | すべて |
| 8 | データ構造 | すべて | 遅延セグ木 |
| 9 | グラフ | BFS, DFS, dijkstra, UF | 木DP、フローなど |
これからやりたいと思っているもの
- 木DP
- 重みつきUF
- 耳DP、LIS、区間DPなど
- ロリハ
- 遅延セグ木
- フロー
- ヒュ
典型90埋め
FFさんに勧められてやってみました。灰色の頃は存在こそは知っていたもののやったことはなかったので、★2~★4を埋めました。
典型という易しそうな名前がついているのに相当難しいです。
★3まではほぼ自力でACできるものの、★4は多くが解説ACです…のびしろですね…
埋めていたときはこれらを管理するサービスがなかったため、Notionで自作しました。
かなり細かくしぼりこめたり、いろいろ管理できます。
よかったらご活用ください。
(公開終了の時期は未定です。予告なく終了する可能性があります。ご了承ください。)
EDPC
典型を埋めた結果、DPに極端に弱いと思って少しだけやりました。
普通に難しくて他のアルゴリズムに時間を割くことにした結果、Dまでしかやっていません。
EDPCもDPの練習にはなりますが、JOI埋めもDPの練習になります。JOIで結果を残したいならEDPCよりJOI埋めを先にやる方が効率がいいかもしれません。
JOI埋め
進捗度合いはこのような感じです。
JOI過去問埋めに対しても、典型90のようなタスクリストを作って管理しました。
JOIはABCと出題傾向の違う箇所があるので、JOIをメインに頑張りたい方はJOI過去問に力を入れることを強く推奨します。
(JOIでは「貼るだけ」のアルゴリズムはあまり出てこないイメージです。ABCではUF貼るだけを何度か見かけましたが、JOIではdjikstraのほうが見ている気がしています。)
こうはいっても、JOIをひたすら埋めるのはかなり効くという印象です。制約や問題文から、「どのようにデータを持てば計算量が減るか、メモリが減るか」のように考えると解ける気がしています。
部分点の制約を手掛かりに段階的に解ける部分もあるので、すごくいい練習になります。
NoviSteps
NoviStepsにはどれだけお礼を言ったらいいものか…本当に助かっています。
diffも大切ですが、自分に合った段階の問題を順番に解くというのは本当に必要だと思います。
(知っている、貼るだけで解けてしまう問題は、その概念自体の難しさが高かったとしてもかなりdiffが下がる印象です。diffだけを見ているとそういうところで頭を悩ませていたのでとても助かりました。)
2Qを最初はやっていましたが、かなりできるなと思ったので、埋めきらずに1Qを中心に埋めていました。
1Qだけじゃなく1Dもやったらいいよ~とききましたが、ハードル高すぎて別世界なのでまだあまりできていません。
進捗はこのような感じです
ABCの復習
upsolveはアルゴリズムを新しく勉強しようと思うきっかけや、新しい使い方を知るきっかけになります。
緑diff以下で解けなかったものは必ず復習をし、できそうならば水色、青色diffにも手を出していました。
鉄則の勉強が進んでくると、TLを見てるだけで解法のヒントがもらえて、Twitterライフがかなり復習になります。
緑になるまでにやったこと:余談
途中で環境がぶっ壊れて、初めてWSLを導入することになりました。
環境構築できない人間なのでFFさんに手伝ってもらいました。
この場を借りてお礼申し上げます。ありがとうございます。
あとはノリだけでGitHubのアカウントを作り、HTMLとCSSを勉強しました。
jsは勉強途中で何もできません。(アラートくらいなら出せます)
他にもblenderを入れてみました。まだ何も触っていません。
逆にやっていないこと
アルゴ式
灰色の時期に文字列だけやって、そのまま放置されています…
ADT
時間がとれていません
ヒューリスティック、そのほかのコンテスト
ヒューリスティックは、長期に関してはサンプル提出だけしましたが、やってないに等しいです。
こどしぇ、こどふぉなどのアカウントを作りましたが、できていません。
これらもいずれはやっていきたいなと思ってはいます。
いつか…余裕ができたら…はい…
精進のお供について
精進するにあたって、「これ使ってよかった!」ってものたちを記録に残しておきます。
Notionのすすめ
Notionすごくおすすめです!!
JOI埋めや典型埋めの他にも、新しく習得したアルゴリズムや知らなかった書き方の備忘録に使っていました。
アウトプットにすごくちょうどいいと思います。PCKの時は自分のNotionを印刷して備忘録として参考にしていました。
拡張機能について
AtCoder Clans でたくさん仕入れました。
おすすめはこの辺です
- AtCoder Dropdown Tasks
- AtCoder Easy Test v2
- AtCoderLanguageButtons
- atcoder-standings-difficulty-analyzer
- ac-predictor
- AtCoder Difficulty Display
- Atcoder Perf Graph
- HighlightAtCoderContestNot2100
- timemory-limit-emphasizer
- atcoder-tasks-page-colorizer
- atcoder-tasks-page-colorize-during-contests
- AtCoderPerformanceColorizer
補足でどんな拡張機能か書こうと思ったのですが、時間がなさ過ぎて諦めました。ごめんなさい。
かなり世界変わるので、拡張機能はどんどん入れましょう。
スマホコーディングもかなりしていますが、拡張機能ないとスマホではきついと思います。
緑になるまでに感じたことなど
今まで思ったことなどを書いておきます。
時間を作る必要性
これです。時間を作るっていうの、本当に大切です。
Problemsのheatmapとレートの遷移を見比べてもらうとかなりわかるのですが、たくさん精進してた7月と11月の後の伸びが大きいです。
本当に時間をつくるのって大切だなって痛感しました。
学生である以上、学業優先なのでどうしても時間を作れないことが多くなります。
(実際、灰色の期間は高校受験にかぶったことでほぼ精進できていませんでした)
そのなかでもJOIなどに参加することで、時間をつくるきっかけにする、というのはすごく効果的だと思います。
自分が苦労したアルゴリズムなどの話
一番苦しんだ記憶があるのは、再帰を使った全探索です。
再帰自体が本当に苦手でした。書いているうちにこれは解消されました。
もし再帰で苦しんでいる同志がいるならば、問題をひたすらやることを推奨します。
他にも、頂点倍加はなかなか習得に時間がかかりました。
頂点倍加の考え方を習得さえすれば、DPやグラフアルゴリズムがぐっと得意になる気がしています。
気合いです。
全体的に痛感したのは、典型を理解してもそれを応用できないという壁でした。
これについては演習あるのみです。NoviStepsの問題集を解くか、JOIをやることで解消できました。
個人的には灰色→茶色の壁の方が高かったです。
考察にかけるべき時間の個人的な考え
考察にはかなり時間をかけていいという意見をよく聞くのですが、「3分思考が止まったら答えを見ていい」と個人的には思っています。
これは私の数学の勉強するスタイルが「すぐに答えをみて問題ごと覚える」のような感じなのもあると思っています。
番外編:オンサイトの話
オンサイト!すごくモチベになります!!!
今年の夏に人生初めてのオンサイト(CodeQUEEN決勝)に参加させていただいて、すごく刺激をもらいました!
参加記も書いたのでよかったら読んでください!
最後に
ここまで読んでいただきありがとうございました!!!
記事を書くのに不慣れなもので、読みにくい部分があったと思います。最後まで読んでくださったことに心から感謝申し上げます。
もし意味がわからないよという部分があったら、コメントなりTwitterのDMなり、何かしらで教えてくださるとありがたいです。
最近は本当に競プロが楽しくて仕方なくて、頭の片隅でずっと何かしらの考察をしています。
ここまで何かに夢中になっているのは文字通り人生で初めてです。
このような趣味に出会えていることが夢のようです。
まわりに競プロerが少ない中で頑張れているのは、間違いなく、困ったときにアドバイスをくださったり、問題を教えてくれたりするFFの皆様のおかげです。本当にありがとうございます。
これからも私は競プロを全力で楽しんでいこうと思っています!
では、次回の記事でお会いしましょう!
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme












