およそ2年ぶりの緑
ちょっとここのところ解いたというより運よく解けた(いまいち正解の自信がない)問題が多く、上振れ感が否めないですが割と安定してパフォ800超えているので緑に戻れてというより上方向にグラフが動き出してよかった(レートが下がり続けるのは本当に苦痛)
自分の実力をレートにすると体感的には下の黒線のような感覚の為、それはそう。始めたころは参加者も今の4分の1くらいで参加者のレベルも違いただの全探索でパフォ1200もある時代のため、もはや参考記録。その頃は全探索以外なにもできなかった。
緑になる(戻る)までにやったこと
・AtcoderProblemsでAを慣れるまで埋め、Bを埋め、Cをおおよそレート順に埋めた。Dも解ける範囲で埋めた。
Aはともかく(最近はAも難しくなってきていますが)、一年半のブランクの間にB問題も相当難易度が上がっており、一筋縄ではいかない問題が増えており、レート高め(100以上くらい)の問題は2020年初め辺りは解けませんでした。
C問題に至ってはほとんど解けず、どうなっとるんや…という状態でしたが、レート順に解いていくことで徐々にレベルアップしていきました。ビット全探索ができれば打率がだいぶ違う気がします。
D問題は幅が広く、水色以上のパフォだとまず手が出ません。レート順に埋めていく。
私ができること、できないこと
他の方のブログを見ていて、自分を見つめなおす点でもいいなと思って書こうと思います。
理解 | 実装 | 重要度 | |
全探索 | 〇 | 〇 | 高 |
ビット全探索 | 〇 | 〇 | 高 |
累積和 | 〇 | 〇 | 高 |
DFS | △ | × | 低 |
BFS | 〇 | △ | 低 |
2分探索 | 〇 | △ | 中 |
imos法 | △ | 〇 | 中 |
DP | △ | △ | 中 |
ワーシャルフロイド | × | × | 低 |
ダイクストラ | × | × | 低 |
クラスカル法 | × | × | 低 |
素数判定法 | △ | 〇 | 中 |
素因数分解 | △ | 〇 | 中 |
カウンタ | △ | 〇 | 高 |
あくまでD問題までを解く上での話です(2021/2/14現在)数学力は平民レベルであり、Atcoder参加者の中ではだいぶ低く下位2割くらいのところにあると思います。カウンタは最近の流行で出現率が高すぎる+やることは簡単なためすぐにマスターというかライブラリ使えるようにするといいと思います。
購入した参考書の感想
俗にいう蟻本。相当難しい。その分ページ数のわりに密度が濃く、最後まで理解できれば相当な実力が付くことで有名だが、Fラン大卒の私には理解できず。
俗にいう螺旋本。そこそこの難易度。蟻本よりまずはこっちを理解する。これでも完全に理解できれば緑どころか水色か青くらいにはなるはず。下の本たちは出てくるのが割と最近の為、一番読んだ本。だけどC++で記載してあり、私はpythonを使用しているため、変換しながら使用していた。
俗にいうけんちょん本。螺旋本と難易度は同程度。練習問題がAtcoderベースのため練習しやすい。
俗にいうPAST本。pythonで記載してある。Atcoderベース。始めたころにほしかった。適切な教材を使用するのが上達の近道と思います。
また本質を理解しながら効率よく吸収していく必要があり、知識だけ詰め込んだところで意味がない。詰込み型で勉強している人は人に説明できるように理解しながら勉強するイメージの方伸びると思います。
これからやっていきたいこと
①ダイクストラを使えるように
E問題で確率高く、典型に近いものが出やすいため、必修科目といえるレベル。
②タッチタイピング(タイピング速度向上)
通常の日本語入力で1分200文字程度の速度であり、プログラムでよく使うキーはほぼ守備外のため、タイピング速度が遅く、日常にメリットがあるため優先度かなり高め。
③環境構築
いい加減プログラミング環境をpaizaIOでなく、もう少しまともにしたい。
使用言語はpythonのためvscodeを用いたサンプルテスト自動化環境を使いたい
(一度導入に挫折している。いや使える環境にはなっているのでA問題でいいから数試して慣れる)
④DPをもう少し深く理解する。
区間DPやbitDP、桁DPも使えるようになりたい(それ以前にナップザックも怪しいため…)
⑤使い勝手のいいライブラリを増やす(あるやつは使いこなせるように)
特に二分探索。バグらせすぎ。カウンタも本番で勉強している感がある。
pythonにはヒープもあるらしい。ダイクストラでいるし、使えるようにする。
ここまで書いておいて忠告
さんざん他でも言われていると思いますが、あくまで趣味の一環であり、これを就活か何かに使おうというのは相当コスパ悪いです。競プロ沼にはまるのはいいですが、天上人や若い才能とふれあってしまうため、自己嫌悪に陥りがちですが、緑までたどり着けば相当すごいと自分に言い聞かせます。文系なら茶色でも相当すごいと思います。
まともなアルゴリズムが必要な競プロの知識を実用的に使える人はほんの一握りかと思います。手段が目的とならぬよう、引き際も肝心かと思います。
競プロをやるメリット(緑までしかどっちにしろわからないが)
プログラムの基礎が学べます。
計算量を意識することができます。
くらいですかね。
最後に(おとぎ話程度に)
私は競プロを始めてから年収が約2.5倍になりました。もともと就職している状態でこれより倍率高い人はそうそういないと思います。これは運用素がとても強く、今は実力以上にもらいすぎています(競プロ界隈のtwitterを見ていると本当にそう思う)
年収がこれだけ上がればほぼあきらめていた結婚もあっさりでき、子どもも授かることができました。競プロをして本当に良かったと思います。始めるきっかけとなったpaizaとけんちょんさんのサイトには本当に感謝しかない。
子どもにもプログラミングは勉強させたいと思います。あとは詰込み型の学習でなく、物事の本質をとらえるような勉強を楽しみながらやってもらいたいです。
もし新卒で就職へのキャリアアップとしているなら
よほど選ばれし化け物以外は、ある程度レートが飽和したところで切り上げた方がいいと思います。私も新卒カードの正社員設計職はどぶに捨てて安月給の派遣社員から再スタートといういばらの道を進み、大手電機メーカー正社員に運よくなれましたが、こんな不安定な道は取らず、少しでもいい形で新卒カードを使うため、たくさん企業研究して、いろんな企業を受けて、いい企業に入ってください。
そうすれば、給料、将来のキャリアや、ワークライフバランス、すべてがいい方向に進みます。競技プログラミングを行なっている人の中には、就職活動がおっくうになっている人も結構多いと思います。就職活動は場数がすべてだと思いますので、まずは就活サイトに早く登録し、早いうちから就職活動を開始してたくさんの企業を受けることが最も重要と思います。
コメント