Hello World.
どうもこんにちは。Un_tlitledといいます。
この度ABC401で入茶させていただきまして、人生で初めて記事というものを書いてみております。稚拙な文章ですが読んでいただけると幸いです。
簡単に自己紹介
なんかその辺で学生をしてます。
プログラミングの経験は 義務教育でスクラッチを触ったことがある程度で ほぼ0です。
まず言語を学び始めるところからスタートして、約1年で入茶しました。
入茶になにが必要だった?
おおまかにわけて
- 言語の習得
- 競技プログラミングを身に着ける方法を知る
- 初歩的なアルゴリズムの理解
の3つが必要だったと思います。
もちろん、もっと効率よく入茶した方もインターネット上には多くいらっしゃいます。まぁ、私はこの3つを身に着けるために1年という時間がかかりましたという参考としてください。
言語の習得
C++をAPG4bで勉強しました。出力ってなんですか?から始まりましたけど、第一章まで終わればABCのAは解けると思います。
ただ、これが大変でして、setやmapといった、重要な型を学ばずに中途半端なところでAPG4b中断してしまいました。 これがバカでした。このせいで入茶が3か月おそくなったといっても過言ではないでしょう。
これから競プロ始めたいよという方は、これらの型をしっかり学んでから、アルゴリズムの学習を本格的に始めることを強く推奨します。
競技プログラミングを身に着ける方法を知る
精進の方法を知る必要があります。私は知りませんでした。
最も効果的な勉強方法は、ABCなどに出て、とけなかった問題を次の日とかに確認することですが、やはり練習問題は必要です。
個人的なおすすめはNovistepsです。5~7Qを中心に解いていました。
またJOIの過去問埋めも効果はあると思います。
アルゴ式は今のところあまり触ってないのでわかりませんが、文字列のところはとても楽しいです。
初歩的なアルゴリズムの理解
鉄則を購入するのが手っ取り早いと思います。わからないところがあれば、APG4bに戻ったり、ぐぐって強い方の記事を読んだりするのがいいと思います。
個人的に二分探索のlower_bound関連で躓いたので、その辺はいつか記事にする予定です。
入茶までに身についたこと
AtCoder ProblemsのAchievementはこんな感じです(入茶から1週間たったくらいに撮ったものなので厳密に灰色の時だけではありません)
NoviStepsです。ここで難易度を確認して解いたものは記録してますが、普段のABCの問題を記録してはないので相当AC数少なめです。
JOI過去問です。言語学び始めの時に難易度1〜2あたりを埋めまくっていた記憶があります。
言語面
C++はなんとなくかけるようにはなりました。深部はなにも理解していません。pythonはやろうと思って手をつけられていないので、これからやっていきたいです
アルゴリズム
- bit全探索
- 累積和
- 二分探索
- DP(動的計画法)
の4つの基本は押さえました。
木(BFS、DFSなど)はこれからやる予定です。
精進のためのサイトなど
AtCoder Problems
diffと自分の提出状況が一目でわかります。ABC後の復習におすすめです。
AtCoder NoviSteps
普段の精進におすすめです。レベルに分けて問題がみられるだけでなく、解法ごとに問題がまとまっている機能もあります。
最後に
初めての記事で長々と駄文を連ねてしまいましたが、最後まで読んでいただきありがとうございます。
また日頃TwitterでたくさんアドバイスをくださってるFFの皆様には感謝でいっぱいです!
今後とも私Un_titled全力で競プロを楽しんでいきますので、よろしくお願いします!