読者です 読者をやめる 読者になる 読者になる

ei1333の日記

ぺこい

競技プログラミングを始めてから4年たつのでまとめた(前編)

競技プログラミングを始めてから4年経つので振り返ってみます.

あと, 何故僕はいつまでたっても弱いのかを検証してみます.

競技プログラミング界隈に染まってしまって, 自然言語が不自由で疎い文章になってしまったのですが, 頑張って察してください(悲しい).

これまで

小学時代

覚えてない.

中学時代

ここが人生の分かれ目だったかもしれません.

脚がそれなり(これは本当にそれなり) に速かったので陸上部に入ろうか, パソコンが好きだったので情報部に入ろうかとても悩んだ時期がありました....

結局情報部に入りましたが, ここは毎日タイピングと(当時の名称)パソコン検定という資格の勉強をする部活でした. 部活全体としては  {3} 年までに検定  {2} 級に受かることが目標でしたが, 僕は天才なので  {2} 年のはじめくらいに受かってしまったので, やることがなくなってしまいました.

そこで顧問の先生に勧められたのは競技プログラミングです. 「パソコン甲子園情報オリンピックで調べてみるといいかもねー」との話でした.

競技プログラミングのプログラミングの部分すら知らなかった僕は, まずプログラミング言語を覚える必要がありました(誰でもそう).

あまりやる気がなくて かつ教えてくれる人もいなかったので(悲しい), 某苦 C というサイトを使ってかなりゆるふわーに独学していました. ポインタあたりで詰んだ記憶が...

とにかく, プログラミングをもっとやりたいなぁって思ってはいたので, 地元の工業高校に進学することにしました.

高校時代

工業高校に進学して, 迷わずに情報処理部に入りました(実質ゆゆ式).

話は脱線します.
実質ゆゆ式と書きましたが, 少なくとも高 1 以前の自分はアニメとは無縁でした. 当時, きんいろモザイクというアニメをやっていたので見てみたら, 競プロのストレスを発散できることに気づいてハマりました. 日常系のアニメはいいですね(は?). (弱くてINF回辛い気持ちになるので何か逃げ道がないとやっていけないと思います...)
高 3 の課題研究ではきんいろモザイクを題材にして, アニメ顔認識について研究もどきをしました. Jubatus という機械学習フレームワークを使って頑張って学習させていました. 研究をしながらきんモザを見れる, 一石二鳥ですね. (こっちの記事を書いたほうが面白いかもしれないけどほとんどのデータが消滅したので...)
脱線しました.

僕が入った情報処理部は, 競技プログラミングをする部活でした(やったぜ). 入部するまで知らなかったです. 入部当初は, 多少はゆるふわな知識があったのですが, そこまで強いわけではなかったです.

その結果が顕著にあらわれているのが以下の実績です.

かなり遅咲きですね, 真面目に競プロをやっていたんでしょうか.

こんな僕とは一方, 僕と同級生の @ukuku09 さんは  {2} 年でPCK本選に出場してプロだったので刺激を受けてました. すごい.

情報処理部は, 基本的には個人活動で定められた時間に AOJ などの練習サイトなどを使って競プロをしましょうという部活です. また, アルゴリズムやデータ構造を教えあって共通の問題を解いたり, 部内プロコンを開いて競い合ったりしていました.

ここで JOI の春合宿に行きたいよー><(ついでに強くなりたいよー) っていう人もいると思うので, ここで自分の方法を紹介します.

生まれ持った才能に頼りましょう.

以上です. 但し, これは対象者が限定されて, 具体的には競プロやったことないけど本選行けちゃった♡ とか, DP知らなかったけどコンテスト時間中にアルゴリズムを編み出したとか そういうプロたちのことです. よくある話ですね. もともと論理的思考力や数学力などが存在する人は, 少しプログラミングをやるだけで通過できるので興味があれば試してみましょう(いいえ).

しかし僕は才能部分が致命的に不足しているので, これだけではさすがに足りません. この場合に行うことは,

問題を解きましょう.

以上です. これもよくある話ですね. 大会ごとの過去問がかなり重宝します. JOI 春合宿の場合は, 人間データ構造になりましょう(は?) という問題が多いので, 非公式難易度表などを使って引き出しを増やしていけば良いです.

前編はこんな感じ, 長くなりそうだったので分割しました. 後編は, 大学以降と何故僕はいつまでたっても弱いのか, またこれからどうすればよいかを考えます....