会津大学競技プログラミング合宿 参加記

9/3〜5に会津大学で行われた競技プログラミング合宿に参加してきました。

この合宿は毎日3〜5時間程度のコンテストを行い、実力向上を目指すのはもちろん、他大学の人と一緒にチームを組むなど、普段会えないような人達と交流を深めることも目的となっています。

大学の団体が主体となって行われるプロコン合宿は去年も行われた会津合宿が初であり(たぶん)、今年3月の立命館合宿に続き3回目の合宿となります。
去年は合宿の存在すら知らなかった僕ですが、3月の立命館合宿に参加したのがとても楽しく刺激になったことと、ちょうど東京を訪れる用事があり陸路で簡単に行けそうだったことがあり、参加させていただきました。今回の合宿もとても楽しかったので、少し感想など書いてみようかと思います。

Day1

1日目はインターンの最終日と重なっていたため、参加できませんでした。

問題は立命館大学の方々の作問で、ついにRespect2Dさん一押しのやよいちゃんが問題に登場したらしく、楽しそうです。(チーム練習用にとってあるのでまだ問題読んでません)

2日目に向けて、インターンが終わってすぐに電車&新幹線で移動を開始しました。インターン勢も会津合宿勢も懇親会をやっていてうらめしかったうらやましかったです。

ここで、どうやらkmatsunaga先生と同じ電車に乗っていたらしく、合流してお話しさせていただきました。
先生のお話は大変ためになりました。というのも、僕は学生であり、コンテスタントとしてもまだ3年目です。
先生とお話して、歴史とまではいかなくとも時代の流れであったり、教員・社会人として見た競技プログラミングであったり、自分の今までの視点とは違ったプログラミングコンテスト観を知ることができました。
やはり僕は考えも能力も子供だなあ、と思いました。いろいろと精進せねば。
先生、ありがとうございました。

会津に着いて先生と別れてからはすぐにホテルで休みました。

Day2

朝起きて、さあ出発だ、と思ったら、スマホの電池が赤かった。
ふとコンセントの近くを見てみると、「消灯中は電気が供給されません」との文字が。
もともとデフォルトで「リアル運×、迷子◎」の属性を有する僕は、G○○gle M○ps大先生という武器を奪われてしまい、本気でやばかったです。なんか住宅地の細い路地とか通りまくりました。
なんとか無事時間ギリギリに到着することができ、会場へ。立命合宿で知り合った方々に久しぶりにお会いできて嬉しかったです。

2日目のチームは事前のアンケート結果から運営側が決めたチーム分けでした。立命館会津の方とKOREというチームを組みました。Dで始まらないです。
このコンテストは非公開(のちのち別のopenコンテストとして開催するらしい)なので、問題については言及しません。
チームとしてはちょっと僕が実装しすぎてしまったかなあ、という感じで、もっとみんなで話し合いながら実力向上につなげられる形でできればよかったなあ、と反省しています。
チームを組んでくださったお二人、ごめんなさい&ありがとうございました!

コンテストが終わった後は恒例のみんなで解法話し合いphaseで、やはり競技プログラマの皆さんだとここが盛り上がって楽しかったり悔しかったり。
解説が終わってから懇親会まで時間があったので、そのままぐだったりしてました。
その最中、必ず答えが"Shimejitan is Dead."になる問題が生まれたりしてやばかったです。

懇親会はカツ屋さんに行きました。
「注文が面倒なのでみんなカツ定食か味噌カツ定食にしよう」と決めた後にwinfieldさんだけカツ煮込み定食を頼んだりしてやばかったです。
真面目な話では、kmatsunaga先生による海外地区予選参加のススメが行われていて、やはり乗り気の人々が多かったようです。かくいう僕も興味はあるのですが、お金のこともあるので他のチームメンバー含め辛そうだなあ、と思っています。要相談。

そのあとは帰って寝ました。うずたんかわいい。

Day3

最終日は会津大のアジア地区予選出場チーム"oshieteZukky"(俗称"おしず")の作問セットです。"KND is So Sexy"でした。
この日は自由にチームメンバーを決めてよいとのことだったので、前日から決めていた通りshioshiotaさんとRespect2Dさんと組みました。shio2derseinというチームです。
TopCoderのレーティングや年齢などが近く、個人的にも好きなメンバーでチームが組めて面白そうだなと思いました。

コンテストが始まってshioshiotaさんがA、Respect2DさんがB、僕がDを読みました。
shioshiotaさんが数学苦手といっていたのでちょっと協力しながらAを解きました。
そのあとはRespect2Dさんが全自動でBを通してくれました。惜しくもファーストアクセプトは逃しましたがそれに迫る勢いで解いてくれてさすがでした。
Dはそれぞれの地点から最近傍のワープ地点を求めればいいだけだと気付きましたが、それを効率的に実現するアルゴリズムが思いつかず、断念してCとEにとりかかりました。
Cは幾何っぽい感じで解法もパッと思いつかず苦戦しました。一方、Eは明らかなライブラリゲー臭を漂わせており、基本Cを解きながら詰まったら交代してE用のライブラリを写経する戦略で回しましたが、残念ながらどちらも通せず2完に終わりました。
チーム練習をもっとして個々の強みや戦略を詰めればもっといけるポテンシャルを感じていただけに、余計に残念ではありましたが、その分学ぶことも多かったと思います。お二人ともありがとうございました!

飛行機の時間の関係で、すべてのスケジュールが完全に終わる前においとましました。
もっとみなさんとお話ししたかったので残念でした。

あ、あと、会津若松駅までの道中でやけにキャリーバッグが重いなあ、と思っていたらいつの間にか片輪がもげていてやばかったです。

あ、あと、郡山駅のお土産屋さんのおねいさんの方言かわいい。うずたんかわいい。

まとめ

コンテストとしてみると結果は芳しくないものが多かったですが、個人で芳しくないときよりも断然得るものが多かったと思います。
何より交流という面で、普段は手の届かないように感じてしまう強い人や、密かにライバル視している人と実際に対面して話し、競い合うことは貴重で有意義な経験だと思います。
競技プログラミングはマイナーで、同じ趣味をもつ同年代の人達と集まれることはなかなかないと思います。
でもその分やはりモチベーションが上がりますし、なにより純粋に楽しい!
どんどん交流の輪を広げ、実力をつけ、自分たちの手でもっともっと競技プログラミング界を盛り上げていきましょう!

今回参加した方も参加できなかった方も、ぜひまた次回参加しましょう!(また春休みに立命合宿があるとの噂が)
また、参加するだけでなく自ら合宿を開きましょう!(参考:Tayamaさんの資料 http://acm-icpc.aitea.net/index.php?plugin=attach&refer=2011%2FCoachWorkshop&openfile=5-ja.pdf)

合宿を企画・運営して下さった皆様、参加者の方々、本当にありがとうございました。
今後も様々な機会で皆さんとお会いできるのを楽しみにしています。