2016年9月6日火曜日

JAG夏合宿2016 参加記

国内予選落ちしたくせにJAGの夏合宿に行ってきました。
みなさんお疲れ様でした。

0日目

大学でJAGの夏合宿の存在を知る。
過去に参加した先輩が、ぼっち参加は辛いから複数人で行った方がいいよ、と言っていたので、とりあえずチームメイトに声を掛けて調整
→国内予選の時のチームメンバー3人(僕と@fooractalとのし(@llll_))で参加することにした。
他に予選に通った先輩方2名も参加してUECからは5人参加。実力不相応な大所帯。
他にも申し込み締め切りを忘れてたとかそういう理由で行きそびれた人が居たらしい。
申し込み時にtwitter垢を晒すかどうか躊躇して書かずに申し込んだら、配られたしおりにおよそ9割の参加者のtwitterIDが晒されていて唖然とした。とりあえずリストを作って全員をフォロー。

1日目

朝から支度をして12時前くらいに調布を出たら途中で昼飯を食って行ってもかなり早くにオリセンに着いた。調布から近すぎて宿泊する意味あるのかなと思う。集合場所で運営が用意したWi-Fiにつながるかテストしたがかなり不安定で細かったのでオリセンでは自分のiPhoneの回線を使うことにした。自己紹介では何を言ったか覚えていないが、他の人がひたすら自分のレートのことばかり話すのが不思議だった。
夜の懇親会では、"直接あったことはないけどtwitterでは相互フォロー"みたいな人たちが集まって盛り上がっていたけれど、そもそも自分はICPC以外のコンテストにあまり興味がなく、いわゆる競プロクラスタに属していたわけでもないのでどうも馴染めなかった。

2日目

なんか同室の人々がやたらと早く寝て早く起きて6時半には全員起きていた。健全。
オリセンでの2日目のコンテストはfooractalがPCを持ってきてないとかいう事案があり、まともに使えるのが僕のUS配列のMBPRだけで困った。厳密にはICPCルールに違反してるけど、外付けのJISキーボードを刺して利用。それでもやっぱり僕以外には使いにくいのでコーディングの大半を僕がやることに。4完してそのうち3問を解いた。

K:

最初に手を付けて簡単なDPっぽいと思ったが、ルールの誤解に気づいて後回し

C:

なんか簡単そうだからのし君に投げて様子を見たら謎の場合分けを始めていたので、取り上げて等差数列を使った解法を編み出してサクッと実装してサンプルも通ったからSubmit、したらなぜかRE。再帰も配列も無いのにREということはゼロ除算か!?と思ってソースコードを印刷して紙デバッグに入るがやっぱり分からない。
Hの後で色々と手を尽くしたらなぜかREが取れてAC(2:18)。

H:

Cで詰まっていたらfooractalが解けたというので計算機を譲って放置。DFSらしい。なんかバグらせていたので途中デバッグを手伝って無事にAC(1:53)。

D:

僕がCで詰まってfooractalがHを書いている間に僕がDの解法を思いついてCの後でゴリゴリと書いてAC(3:54)。普通にグラフを作ってDFSするだけ。最初は何回も分数のかけ算を繰り返す必要があり、long long intでは収まらない程度にまで分母分子が大きくなるんじゃ無いかと思っていて、素数指数表現で数値を持たせて地道に素因数分解していたらコードがやたら長くなってしまい実装に時間が掛かった。終わってからgcdを使えばいいことに気付いた。

I:

解いたチームの数だけ見てこの問題に着手することに。貪欲法でやるだけ。簡単だが問題文の誤読があり、書き直しで時間を消費。なんとかAC(4:45)。

Cの謎のバグで時間をロスしたのが痛かった。相談しながら問題を解くほどの能力がチームに無いので無駄に誤読や回り道で時間を費やしていたのが課題。

3日目

LINE本社にて模擬地区予選。なんかリッチな感じの会場ですごかった。
5時間掛けて2完に終わってしまい凹む。

A:

すごく簡単そうな問題だったのでさらっと書いて出したらWA。なんでやねんと思ってよく問題文を読み返したら数列が単に昇順であるにのみならずconsecutiveでなければならないと書いてる。どういう意味かと思って持ってきた辞書を引いても載っていないので、おそらく連続していればOKだろうと判断して書きなおしたらAC(0:29)。

B:

簡単な探索問題らしい。fooractalに任せてAC(0:37)。

D:

その後自分は簡単そうなD問題に着手。)))(((の形には行きついたもののの、反転数の大きいものを崩すのではなく、複数の文字列を繋ぎ合わせて出力するという方向に行ってしまいWA。サンプルと半分くらいのテストケースには通るので、入力がデカイ時の桁あふれかと思っていたら失敗した。

C:

Dの紙デバッグをしている間にfooractalに投げたらなんかクソ長いコードを書いていて、さらに見ていたら一回捨てて1から書き直してまた詰まっていて、仕方なく僕が書くことに。問題のルールを誤解していてコードが完成せず終わった。後で解説を読んでも働いてる人が脱退した場合にその人についてニートになったと出力をするべきなのかが曖昧な気がした。

結果的にはDのミスに早く気付いていればCも最初から全部自分で書いて4完できただろうと思ったけど、それってチームの意味が無いような…問題のデバッグとか考察を2人以上でやればいいんだろうけど、説明しても難易度的に僕しか扱えなかったりして難しい。

夜にAGCに出てA,Bだけ解けた。

4日目

のし君が別のイベントに参加するために離脱。
KLabの会議室で行われた模擬コンテストでは人数合わせのために紺青(@konjo_p)さんとチームを組む。レベルが違いすぎて申し訳なさしかなかった。
チームで4完。自分では0完

A:

最初自分が担当。やるだけ問題なのだが、計算量の見積もりを誤っていて無駄に難しいこと(値が最小のキーの取得と値の更新をO(logN)でやる)をしようとしてコードがスパゲッティー化して詰んだ。1から書き直すように促されたのを交代しろということかと勘違いして紺青さんに丸投げ。
弁当を食べずにいたら空腹が限界でまともにコードを書ける気がしなかった。時間配分的には大きな失敗。

B:

鬼畜な幾何問題ということが分かったので放置。

C:

自分がAを書いてる間にfooractalが解法を考えたので計算機を譲ったら一発ACしてた。どういう問題なのかは謎。

D, L:

いつの間にか解かれていた。詳細不明。

全然役に立てなかったけど、チームで競技プログラムをやってる感はあった。コーダーは他のことやっちゃダメとか怒られたのが新鮮だった(普段は実質的に2人ペアなのでどちらかのコーディングに割り込みしないと何も相談ができない)。

感想

運営の人手が足りてなくて本当に大変そう。強い人ならソロで参加しても楽しそう。逆に弱い人にはたとえ複数人で参加しても問題解けなさすぎて辛そう。僕らみたいに競プロサークルがない大学の場合には、チーム戦のやり方を知ることができて問題解けなくても勉強にはなった。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。