ヘクトのメモ

なんとなくいろいろ書いていくと思います.

プログラミングを初めて約5年

この記事は「競プロ!!」 競技プログラミング Advent Calendar 2017 24日目の記事です.
adventar.org

今年は真面目な記事を書くつもりはなく,ポエムを書いていきたいなぁと思います.*1
遅れてすいません... *2

あなたは誰ですか?

東京農工大学のM2の学生です.
ハンドルネームはヘクトで,競プロのIDはHec.
ICPCに5回出場して,nocowのチームリーダーをやっていました.
現在,プログラミングを初めて約5年になるところです.

競技プログラミングとの出会い

競技プログラミングとの出会いは高校時代まで遡ります.
その頃からプログラミングに対して興味はあったので,JOIとかに興味はありました.*3
また,高校時代はいろんなジャンルの本をとりあえず買ってみるという生活を送っていました.
高校2年生の時にプログラミングコンテストチャレンジブックをなんとなく買いました.
ただ,その時期には計算量とかの概念を全く知らず,最初の例題を読んでなんとなく効率的なプログラムなんだなと思って読んでいました.
*4

2013年

大学受験を終えて,情報工学科に入るんだしということで落ち着いてプログラミングを始めました.
Cの絵本とかを読みつつ,Visual Studioでとりあえずプログラムの動かし方だけを覚えて,少しずついじり始めました.
その後,入学当初からプログラミングが得意な同級生に質問したり,雑談したりしていろいろ覚えました.
また,ロボット研究会 R.U.R.と コンピュータサークル MCC にも所属しました.
その当時からMCCでICPCに参加している先輩がいたので,その練習会にも参加し始めました.
7月にICPCに参加しましたが,初年度は大変でA問目を解くのが精一杯でした.
また,JOI経験者のチームメイトが強くてチームで3完でした.
この頃には,Visual Studio から gcc に切り替えていた気がします.
その後,蟻本を本格的に埋め始めました.
9月にJAG夏合宿に参加し,国内トップの競プロerの強さを知ったと思います.
コミケで競プロ本を買ったりと情報収集もしていました.

2014年

UTPC 2013に参加するなどして,積極的にオンサイトでの交流を始めた年です.
この頃には,競プロをしていることが当たり前の生活になっていた気がします.
3月くらいにはCFの旧基準でDiv 1になっていた気がします.
SRM div1 と div2 を振動していた時期でもある.
Code Festivalが始まり,初めてオンサイトの大会に参加した気がする.
ICPCに出るけど,「バンパイア」で時間を取られて国内予選はダメでした.
この年のICPCメンバーで以降は戦っていました.

2015年

学業が非常に忙しくなってきた頃です.*5
ICPCに出るけど,「500円玉貯金」で時間を取られて国内予選はダメでした.
SRMのレートが青で安定し始めた時期ですかね.
ABCの難易度レビューとか書いていたのもこの時期でしたかね.

2016年

卒論を書き終えて,修士課程に進学しました.
春休みは Code VS をやっていた.
ICPCに出場して,国内予選13位で初めて通過しましたが,つくば大会では24位と力を発揮できず.
SRMのレートが黄色で安定し始めた時期ですかね.
ARCの難易度レビューとか書いていたのもこの時期でしたかね.

2017年

2016年度末に新レーディングで2400を超えたので,AtCoderで作問をするバイトを始めました.(長期のバイトとしては初めて)
今年は約40問くらい作問を行い,Code Thanks Festival 2017の writerもやりました.
競プロやICPCで関係で知った企業を中心に就活しました.
ICPCに出場して,国内予選5位で初めて企業賞を手に入れました.しかし,つくば大会では34位と力を発揮できず.
ただ,国内予選の順位が良かったおかげで遠征費補助が出たので,タイの大会に参加したら8位をとり,初めて表彰台に上がる経験をしました!
*6

思うこと

始めた当初は,レッドコーダーとか雲の上の人にしか見えなかったです.
ただ,最近になると明確な差を実感できるようになり,無理ではなさそうに思えてきました.
続けていくと頭の中の基準が変化するので,今は無理でもいつかは可能になることを実感しています.
あと,大学生活に支障を出さない程度に自制して競プロをしましょう.*7
また,他大学の知り合いを作るきっかけにはなりましたし,その経由でいろいろな情報を得るきっかけになっています.

練習面

あるコンテストや難易度表のある特定の難易度帯の問題をちゃんと埋めるのが効率良いなと思います.
ABC・ARC・SRM Div1 Easy・SRM Div1 Medを埋めるのは結構効く気がします.
コンテスト時間内で問題が解けなければ解説を見てしまった方が良い気がする.
また,コンテストごとに特化した練習はしておいて損はないかと.

現環境

PC: Mac book
エディタ: Sublime text 3
テンプレートやライブラリはスニペット化して使っています.
コンテスト前にお菓子を食べることが多い.
紙とシャープペンシル
テンションを上げるために,コンテスト前に好きな音楽を聴いたりして,コンテスト中は無音にします.*8

あとがき

もう少し追記されるかも.*9

*1:やざてんさんの記事とテーマが被った気がするけど気にしない、気にしない

*2:修論が忙しいので

*3:当時は何をやっている大会か全く知らず

*4:コンパイルという概念を知らず,C言語ソースコードを書いては動かない... なんて時期でした

*5:なので,記憶がほとんどぼんやりしている...

*6:そのうち,ICPCのノウハウとかは少しブログに書くかもしれません

*7:何かあった時に周りの協力を得る上で重要な要素となる.

*8:supercell,EGOISTなどの曲をよく聴いていますかね.

*9:Twitterの履歴を引っ張れば,もう少し詳しく書ける気がする.