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

学習の栞

学びたいことと、学ぶべきことと、学べることの区別がついてない人間の進捗管理

2014年JAG夏合宿参加記

競技プログラミング プログラミング

ご無沙汰しております。JAGの夏合宿に参加したので参加記をば。

0日目、JAG合宿参加のため夜行バスで東京へ向け出発しました。航空機や新幹線と比べて片道1万円ほど浮くのは魅力的ですね。

1日目、東京新宿駅に到着。同じ夜行バスに乗っていたチームメイトと時間を潰し、航空機で来たチームメイトと合流しました。また、@nisshy nisshy(@nsd_fb)さんと合流し昼食後オリンピックセンターへ向かいました。
この日はコンテストはなく、自己紹介と懇親会がありました。懇親会の時点で、既に競プロ勢のコミュニティが出来上がっていると感じ、twitterでも競プロ勢を積極的にフォローしていない自分は気後れ。同部屋の人や同大学、同大学に編入予定の方とばかり話していました。

2日目、この日は10:00からコンテスト。この合宿にはICPC予選に参加したチーム全員で参加していたのですが、「強い人と組んで、強い人とはどういう人かを感じる」との方針のもと、臨時チーム募集所を利用してチームを組みました。この日はamylase伯爵ともう一方(ハンドルネームを失念してしまった。メモしておけばよかった)と組み、vimmersとしてコンテストに参加。結果2完でした。
私はB問題を担当し、amylaseさんの助言を得てDPの方法を考えていたのですが、ACならず。3時間が過ぎた頃でしょうか、二つのケースを示され、その二つのケースが同時に通るようなDPでなければならないことが分かり、その時点で考えていたDPではその二つのケースが同時に通るようなことは無かったため、別の問題を考えることになりました。この時点でA問題がAC、C問題がWA。C問題について、高々21通りについて答を埋め込んでやればACすることが分ったので、3人で手分けして答を導き埋め込み、submitデバッグの末AC(間違った答埋め込んでいたの私だけじゃなかったっけな。反省。)。score boardを確認し、あみだくじのD問題を解こうという話になり、計算量的に間に合う解法の見通しが立つも、実装できずコンテスト終了しました。

3日目、リクルート社に移動し11:00から模擬地区予選。この日もやはり臨時チーム募集所でチームを組み、デング熱としてコンテスト参加。この日は@yuustiさんと@hirokazu1020さんとチームを組みました。私と@hirokazu1020さんでA問題を読んだ後、とりあえず私がA問題を実装。誤読があり、バグらせましたがsampleで落ちたので@yuustiさんの助言を受け、修正し提出すると無事AC。私がAを書いている間@yuustiさんがC以降を、@hirokazu1020さんがB問題を読んでいました。AをACした後、Bの題意がいまいちつかめないということでBを三人で読むことに。@yuustiさんがB問題を説明し、解法の概要まで示してくれたので私が実装することに。BをACしたあと、@yuustiさんがDの解法の方針を説明。後、@yuustiさんの実装でAC(解法の説明があったのは、B実装前だったかな。)。Dの実装中、私はGを、@hirokazu1020さんはHを読解。Gは、毎日一つづつクッキーを食べる前提でDPをし、順列の計算で解を求めるという解法(想定解2)ができ、組み合わせの計算で出てくる階乗の計算をどうするかという問題を残してしました。後に、高々2000回ループを回せばよいことに気付き、計算量的には問題の無い範囲に落とせました。Gの実装は私が除法でmodを取っていく計算をよくわかっていないことと、DP慣れしていないこととで、@yuustiさんが担当。無事ACしました。また、G問題と並行して、H問題を@hirokazu1020さんが実装。GをACした後、Hを3人でデバッグし、AC。結果5完になりました。

4日目、合宿最終日。この日は同部屋だった@ENIXERvsREXINEさんと@assyさんの3人でチームを組み、assyとしてコンテスト参加。「自己申告3完の人が集まったチームなので2完したら褒めてね」と呟いていたような気がする。A問題を私が、B問題を@assyさんが実装し無事AC。C問題が難しいのではないか(のち、誤読と判明)、E問題は実装が重めだが、構文解析の部分を抜ければ自明な解法であるという判断のもと、@ENIXERvsREXINEさんがE問題の実装をすることに。この間、私はD問題を考えていたのですが、結局解法を導けませんでした。B問題ACのあとC問題を改めて読んだところ、誤読があったことが分かり、C問題はさほど難しくない問題であると分った。@assyさんに手計算をしてもらって、Cを実装しAC。C問題に関して、入力以外はちゃんとlong longで計算しているのに、入力だけintで受け取っていてWA叩いたのは反省点。E問題はああでもない、こうでもないといいながら実装がんばりました(@ENIXERvsREXINEさんががんばってました)が、ACできず結果は3完でした。でもまあ、自己申告で国内予選3完の人が集まったチームとしては上出来だったのではないでしょうか。

合宿終了後、高速バスで帰宅することに。高速バスまで時間があったので、荷物をコインロッカーに預けたあと神保町に行ってみました。数学書とかも古本だと値段落ちてていいですね。何冊か安くで変えました。

5日目、福岡到着。博多で昼食、用事を済ませたあと帰宅。午後2時ごろに自宅にたどり着きました。疲れが溜っていてそのまま12時間超えの睡眠へ沈みました。これにて合宿終了です。


合宿を通して。
実は今回のJAG合宿、交通費+参加費の3万程度払ってまで参加する価値があるかどうか半信半疑のままの参加でした。結論から言って、3万円出した価値はあったのではないかと思います。今まではtwitterやコンテストのスコアボードでしか見たことの無い人たちと会えて、競技に対する意識が高まったこともそうですし、何よりも演習量いかんではこの人たちに追いつけるのではないかと思えたことは大きな収穫だったのではないかと思います。競技プログラミングのような事に関しては輻輳説のようなものを信じていますが、努力して埋められない差ではないということは感じることが出来ました。
合宿参加者の皆様、お疲れ様でした。合宿参加者、JAG、リクルートの皆様、ありがとうございました。