目次
1.はじめに
2.後悔など
3.使ったアルゴリズムなど
4.最後に
はじめに
2023年 4月29日ユニークビジョンプログラムコンテスト ABC300にて入茶することができました!!
いやぁ..本当に良かった....
結構勉強したので、それが報われたのが客観的な数値で表されるのはうれしいです
jefuo1st って名前でやってます↓
後悔など
自分はpaziaで初めてプログラミングを学び、競プロに出会いました。アルゴリズムなどを駆使して論理を組み立てていき回答する過程が凄く楽しいなと感じまして、やっていくうちに競プロ関連のサービスや機能が充実しているatcoderを見つけ、本なども買って読み漁ってました。ですが....
自分はネットで、入茶した人の記事にかいてある必要なアルゴリズムをある程度学んでからコンテストに参加しようかな。とか考えていました。 コンテストに参加し始めたのは3月からですが、勉強自体は実は1月から始めていたのです.....
それは全くの無駄でした。
なぜならコンテスト中の1時間40分、そして後日に復習する このセットが最も実力が伸びる期間だからです。
次のコンテストへのモチベーションも上がりますし、コンテスト参加回数少ないと獲得するレートにマイナス補正が掛かったりしますし、新しい知見を得るチャンスを何度逃してしまったことか なぜか完璧主義者みたいな考え方をしてしまっていました。
これから競プロを始めるかたは、入茶した人の記事を読み漁るのは凄くためになると思いますが、僕と同じ道をたどらないで欲しいです。とりあえずコンテストに参加しまくっていただきたいです。
ここまでコンテストに参加してきて、過去問を解いてきて思ったことは、
A~C問題はアルゴリズムを使う問題よりも、実装力や計算量を何とかして少なくする力を求める問題が多くて、アルゴリズムばかり勉強していた自分は結構時間を無駄にしてしまいました。これもコンテストに参加していなかったからですね...気づくのが遅れました
アルゴリズムはD問題から多いですね。
実装力の問題は特に数をこなしていかないと力がつかないと感じました。同じような問題が二度と出ないんじゃないかってぐらい特殊です。
ノートとペンを用意して頭の中を整理しながらコードを書いて行くと若干解きやすくなりますね。
復習に役に立ったのはNotionていうサービスでした。何かしらを得ることが出来たら、1問ごとにページを作って解説やら感想を書いたり、「復習」っていうタグをつけてもう一回解きたい問題を整理したり
「DP」「実装問題」とカテゴリ別に分けたりととても便利でした。
使ったアルゴリズムなど
アルゴリズムはあまり出ないと言いましたが、その中でも頻出のアルゴリズムはありました。
DP (動的計画法)
基本的なレベルで大丈夫でした。
アルゴ式のDP 動的計画法 (1) イントロダクションと動的計画法 (2) 2次元の動的計画法をやりましょう
↓
Educational DPの A~C
茶色程度のDP 過去問
DFS BFS (グラフ)
深さ優先探索の問題はこのコードを最初に書きましょう(pythonの場合です...)↓ でないとREすることがあります。
import sys
sys.setrecursionlimit(10 ** 7)
茶色に必要な知識としては、グラフとグリッドグラフの探索方法、連結成分、辺、サイクルなどの木の知識といったところでしょうか。以下のアルゴ式でそこら辺を一通り学べます。
アルゴ式の1~5章
5章の二部グラフはやらなくて良いかと トポロジカルソートを始めとしたサイクル検出問題は茶色レベルにも出ることが確認できました。以下の過去問集に記載してます
茶色程度のDFS BFS過去問
一見グラフと関係にないように見えますが、トポロジカルソートなどでサイクル検出問題に落とし込む問題です↓
最後に
これからは緑を目指していく、または他のアプリケーションとか作っていこうかなと思いま!!!