JAG 夏合宿 2023 生活編 (2023/09/16-18)

ICPC OB/OG の会主催の夏合宿に参加しました。

まえがき

この記事では合宿のチームコンテスト以外の部分について主に書きます。びっくりすることにカメラロールを見返したらオリセンで撮った写真が 1 枚もなかったのでほとんど文章になりますがご容赦ください。

スケジュール

合宿は 9/16 (土) から 9/18 (月・祝) の 3 日間で、東京都渋谷区にある国立オリンピック記念青少年総合センターで行われました。以下は実際ベースのスケジュールです。

9/16 (土)

時間 内容
12:00 -- 13:00 現地集合
13:00 -- 14:00 合宿ガイダンス・自己紹介・コンテスト準備
14:00 -- 17:00 コンテスト (3h)
17:00 -- 17:30 解説 1
17:30 --18:30 夕食
18:30 --19:00 解説 2
19:00 -- チェックイン後自由時間

9/17 (日)

時間 内容
07:30 -- 08:30 朝食
08:30 -- 09:00 コンテスト会場集合
09:00 -- 10:00 コンテスト準備
10:00 -- 15:00 コンテスト (5h)
15:00 -- 16:30 解説
17:30 --18:30 夕食
18:30 -- 自由時間

9/18 (月・祝)

時間 内容
07:30 -- 08:30 朝食
08:30 -- 08:45 チェックアウト・シーツなど回収
08:45 -- 09:00 コンテスト会場集合
09:00 -- 09:45 コンテスト準備
09:45 -- 14:45 コンテスト (5h)
14:45 -- 16:00 解説
16:00 現地解散

持って行ったもの

  • パソコン、充電器、マウス
  • スマホ、充電器
  • コンセントタップ
  • 蟻本、競プロ関連のメモを書いてあるノート、印刷したライブラリ
  • バスタオル、小さいタオル
  • 歯ブラシ、髭剃り
  • ティッシュ、マスク
  • 2 日分の着替え
  • 折り畳み傘
  • 将棋盤駒

持って来なかったことを後悔したものは歯磨き用のコップくらいです。

1 日目

前日までインターンで毎日 8 時間・週 5・全出社の労働を 3 週間行っていたので、気づいたら当日になっていました。最初から疲労度 MAX の状態で合宿が始まります。

現地集合まで

荷造りを終えて 10 時過ぎに家を出ます。Kite_kuma さん、miscalc さん、naniwazu さん、かっつさんなど、合宿参加者に誰かしら将棋プレイヤーはいて、なおかつ誰も将棋を持って来ないだろうという読みで千駄ヶ谷にある日本将棋連盟に寄って将棋盤駒(合わせて約 3,000 円)を買いました。

購入した将棋盤と駒。プラスチック 1 字駒の物珍しさに惹かれて即決

その後は 11 時に新宿で torisasami くんと待ち合わせて食事する約束をしていたのですが、いつも通り torisasami くんが遅刻するという連絡をしてきたので新宿駅まで歩いて向かいます。パソコン、蟻本、ノート、ライブラリなどで荷物は想像以上に重く、駅に着いた頃には既に体がバキバキになっていました。重い荷物を降ろして休憩している間に torisasami くんが来て、みやざき館で食事をしたのち小田急線で会場のオリンピックセンターに向かいました。オリンピックセンターは中高の部活の合宿で毎年来ていたので、懐かしさや昔との変化を感じながら会場に着きます。

ガイダンス

会場に着くと、まず紙の宿泊のしおりをもらいました。こちらには事前にメールでもらっていたしおりとは違って、各部屋の参加者の名簿が載っていたので、自分の同室を見たり知り合いのいる部屋を眺めたりしていました。自己紹介では将棋盤駒を買ってきた話をしたらそこそこ笑いが起きて、その後に続く人たちも将棋に絡めた話をされていたので嬉しかったです。

コンテスト

チーム名 DELIAIR(おいしい庄内空港)
時間 180 分
問題数 11
正解数 8
順位 3
VS. Speed Star X
VS. The Raspberry Candies O
VS. SPJ O

夕食

この日はチームメイトの 3 人に加えてかっつさんと合流して一緒に行きます。場所はセンター内の食堂カフェテリアふじで、17 時半過ぎに行ったところかなり混んでいて入れるまでに 10 分ちょっとかかりました。かっつさんとは社会の話や石川の話をしました。私は 3 週間のインターンでへばりながら合宿に参加していたので、社会人をやりながら深夜の Codeforces に参加し、休日に石川から東京まできて運営の仕事をしているかっつさんの無尽蔵な体力に凄まじさを感じました。

食事はいわゆる合宿飯みたいな感じです。昔は選択肢がいくつかあったと記憶していたので、問答無用で同じメニューになっていて少し驚きました。食事中は torisasami くんが「ICPC は提出するたびに 3 km 先の提出所まで走って出しに行く方が盛り上がるんじゃね」とか「コードファーマー」がなんとかといつも通りの意味不明トークを繰り広げていて安心感がありました。

チェックイン

再びコンテスト会場に戻って解説が終わった後は、荷物をもって部屋に向かいます。部屋に着くとルームメイトは既に全員揃っていて、簡単に自己紹介をしました。以下、失礼ながらルームメイトについて少し紹介させていただきます。

ebi_fly さん

東京工業大学チーム AMATSUKAZE 所属。noya2 さんが何度か部屋に来たり、東工大メンバーでコンテストの感想戦や TTPC 作問の通話を深夜までやっていた話を聞いて、東工大は学年を越えての交流が盛んで羨ましく思いました。

ebi_fly さんの参加記

nisshy_280 さん

滋賀大学チーム coconut milk 所属。合宿直前まで北海道でバイトしていた話がとても面白かったです。私も親戚の家が滋賀にあって定期的に行っているので、滋賀県トークを興味深く聞いていました。

krps さん

早稲田大学チーム hot-k-k-1 所属。B1 ということで、22 歳大学院生にとっては若すぎて眩しすぎます。早稲田の競プロ事情も少し聞けて良かったです。今後の活躍を楽しみにしています。

部屋は階段や奥にある談話室のすぐそこという非常に良い立地でありながら、片方の照明があまりにチカチカしていて使い物にならなかったのが難点でした。

自由時間

自己紹介の後は同室の 4 人で一緒に風呂に行きました。風呂ではシャンプーのポンプの押す部分が破壊されいて真下に液が垂れてくる、シャワーの散水版が外れていて水がバシャバシャ出てくるなど、これまた難物に事欠きません。学部生の nisshy_280 さんや krps さんに、B1 B2 の頃から横浜出られるのはいいですねとついうっかり老人トークをしてしまいました。

風呂から上がるともう 20 時半を回っていて、各自で ABC 320 の参加準備を始めます。Wi-Fi の存在を知らなかったので、全員テザリングを使って参加することになりました。他の人と同じ部屋で atcoder コンテストに出るのは初めてだったので、情報共有などが起きないよう最大限に注意を払いながらの参加で、普段にはない特有の緊張感がありました。

風呂上がりで疲れがどっときて、眠さがピークに達している状態で ABC が始まります。C が少しめんどかったものの A から E まではあまり詰まらずに解け、F も大まかな解法はすぐわかりましたが細かいところを詰めるのに苦労しました。残る G は判定問題を最大流問題に帰着できることはすぐにわかりましたが、計算量を落とす部分で詰まります。このあたりで無意識に唸っていたようで、後にルームメイトから指摘されました(ごめんなさい)。結局前回の universal cup でやった手法で O(N^3) になりそうなことがわかったので、重い腰を上げて実装を始めます。終了 1 分前にやっとこさサンプルが合ったので出してみるとまさかの TLE で、実はフローを流すかどうかを見る部分で O(N^2M) かかっていました。ABC が 7 問体制になって問題数が減ったにもかかわらず 2 連続で全完に失敗し、心も体もクタクタになりました。

ABC 終了後は krps さんが C で詰まっていたことを知りました。3M の 3 重ループを回すのが実装楽そうと言ったもののあまりピンと来てないようだったのですが、一度止めたリールを再開できると勘違いしていたみたいでした。

ABC 終了後に Kite_kuma くんから将棋をやらないかという打診が discord に来ていたのに気づき、温めていた盤駒をもって談話室に向かいます。Kite_kuma くんはチェスをかなりやっているようで、iPad に対局時計が入っていたのでとりあえず 5 分 5 秒のフィッシャーでやりました。私はクマーという名前からてっきり振り穴党なのかと思っていたのですが 2 手目 8 四歩で早々に意表を突かれます。戦型は相掛かりになり、中盤で私が竜を作ることに成功して有利になるも、うまく食いつかれて受けに回るものの攻めをつながれる展開に。終盤は角 2 枚をベタベタ打ち付けて怪しく迫っていたところ、詰めろになっていないこちらの手を受けてもらってなんとか逆転に成功しました。感想戦でも手抜きで攻め合われてたらやはり負けだったようです。2 局目は時間がなかったので 3 分 2 秒のフィッシャーで戦型は矢倉に。中盤で私が銀矢倉に堅く囲って右辺で飛角金桂歩で手を作る理想的な展開になりました。途中で Kite_kuma くんの時間が切れてしまい、その後は適当に指し継いでいたのですが、私が飛金両取りをうっかりするやらかしをしてしまい、談話室撤収の 0 時も近かったのでお開きになりました。

部屋に戻ると krps さんは既に熟睡されていて、他のルームメイトは誰もいませんでした。その後、帰ってきた nisshy_280 さんが ABC で水色になったことを聞きました(おめでとうございます!)。さすがに疲れていたので 0 時半頃に寝床に就きました。

2 日目

朝 7 時 20 分頃に (おそらく方向的に) ebi_fly さんのアラームの音で起床します。正確には眠りが浅かったゆえ途中 4 時、6 時あたりに 2 回ほど目が覚めてしまったので 3 回目の起床となります。

朝食

軽い洗顔などを済ませて、7 時半前後にルームメイト 4 人で行きました。会場はやはりカフェテリアふじです。朝食は最初にご飯やみそ汁をもらって、そこからはバイキング形式となるのですが、バイキングの部分は急に終わるので選んでいるとほとんど取れずに終わります。前から貪欲に取りましょう。

食事をしていたら torisasami くんの部屋の一行も来て合流しました。torisasami くんはこの日は地元の加茂水族館の T シャツを着て来ていて、「合宿は競技プログラマーしかいないからどんな服着てっても大丈夫だと思ったら違う人たくさんいてビビってる」とか言ってました。

部屋に戻ると、もう片方の照明もチカチカするようになっていましたが、その代わりに入口にある壁灯のスイッチを押せば壁灯が使えるようになることがわかったのでトントンといったところでしょうか。

時間が少しあったので昨日の ABC-G が賢いよねみたいな話をして upsolve しました。しおりには 9:00 -- 10:00 は準備と書いてあったので 10 時に開始できるようにすればいいかと思っていて、コンビニで水や食料を買って 9 時半頃にコンテスト会場に着いたのですが、どうやら 9 時集合であったようで、チームメンバー・JAG スタッフの方々には大変ご迷惑をおかけしてしまい、申し訳ありませんでした。

コンテスト

チーム名 DELIAIR(クラゲドリーム館)
時間 300 分
問題数 12
正解数 7
順位 4
VS. Speed Star X
VS. The Raspberry Candies X
VS. SPJ O

夕食

部屋に戻ると nisshy_280 さんと krps さんしかいなくて、少し待っても ebi_fly さんが帰って来ないので、貴重品は持って鍵を開けっ放しにして 3 人で行くことになりました。夕食会場で ebi_fly さんが前にいるのが見えて、「鍵開けっ放しじゃん笑」となりました。貴重品は常に持ち歩きましょう。会場では奇遇にもまた torisasami くんの同室一行と一緒になりました。このときの彼の意味不明トークは思い出せませんが、食事会場を出る時に「なんか腹一杯なんだけどなんでだろう」とボケていて、nisshy_280 さんにツッコまれていたのが面白かったです。

tabr くんから夕食の画像をもらいました。感謝!

自由時間

この日もまた同室の 4 人で風呂に行きました。風呂では nisshy_280 さんのバイトの話を聞いてたら、どうやら私も昔そのバイト先に行ったことがあるということがわかって少し盛り上がりました。帰って ARC165 の準備をしようとしたとき、充電器をコンテストの部屋に忘れたことに気づきましたが、まあ今 95% あるので耐えるだろうということでわざわざ取りに戻りにはいきませんでした。

部屋では ARC に向けて仮眠を取る流れになっていたので、私もそれに便乗して横になりました。連日重い荷物を運んでいるせいか、足がプルプル震えているのを感じてさすがに休憩取らないとなと思い、30 分程寝ました。

起きた後は tabr くんの部屋にお邪魔して、potato167 さん、pitsu さんと一緒に大富豪に入れてもらいました(いきなりなのに本当にありがとうございます)。特殊ルールは 8 切りと J バックのみで、なかなか地味な戦いでしたが、革命がたくさん起きて面白かったです(革命起きてる!)。途中から houren さんも戻ってきて、5 人でやりました。計 7,8 戦はやったでしょうか、229 室の皆様本当にありがとうございました!

時刻は 21 時手前になっていたので、談話室で Writer の chinerist さんと少し話をした後部屋に戻って ARC の準備を始めます。触っていないはずの PC の充電が 62% になっていたので、さすがにびっくりしてとりあえず低電力モードをオンにして画面の明るさを最低にする応急処置を取りましたが、2 時間は持たないだろうなと思いました。

今日は仮眠を取ったおかげか少しすっきりした状態で ARC が始まります。A は素べきに分解するのが最小だろうと思ってやってみると通ります。B は最初は降順ソートだと誤読して、さすがに 600 点にしては簡単かと思って確認したら昇順であることに気づきます。基本的に一番後ろをソートするのが良くて、それをどれだけ前にできるかという話になるので、ごちゃごちゃやって 1 ペナで通します。C は見てすぐに解けました。D を見て不可能か?となり、E を見るとこちらもまた不可能か?となって結局どちらかというと可能そうな D に戻ってきます。各頂点から各頂点への到達可能性を持ちつつ辺の追加ができれば良くて、これは bitset を使う O(N^3) でできるのを思い出し、TL ギリギリかなと思いながら書いてみると 43 ms で AC します。続く E では、10 分くらい考えて順列を考えるのを思いつき、2 乗の木 DP で O(N^3) だなあと思って意気揚々と実装すると合いません。よく考えると情報が足りないのに気づき、DP の状態を追加して O(N^5) になってしまいましたが、定数倍は良さそうなので書いてみると 816 ms で AC します。残りは 10 分だったので、F 問題を考えながら今のうちにと歯磨きを済ませておきました。最終結果は A-E の 5 完 31 位で、unrated ながらも悪くない結果を残せて安心しました。充電もなんとか最後まで持ち堪えました。

ARC が終わると、同室で参加されていた ebi_fly さん、krps さんはどちらも B の WA で苦しんでいたようで、特に ebi_fly さんは 1 ケースのみ WA だったようです。ebi_fly さんのコードを少し説明してもらいながらデバッグを手伝っていると、for 文の範囲が間違っていそうだったのでそれを直してもらうと通りました。

その後は例によって将棋をもって談話室に行くと、Kite_kuma くんがいたので将棋をやります。戦型は角換わりになり、相腰掛銀だと思って適当に指し進めていたら相手の銀がいつの間にか 6 四まで来ていたので急いで右玉に組み替えます。8 筋で銀交換が行われた後 7 八の金取りに打たれた 8 七銀を秒に追われて手抜いたのが良くなく、駒損で切れ模様という苦しい展開になります。苦しいながらも戦線を拡大しながら迫っているといつの間にか角が手に入って、角のラインだけで手になる形になってなんとか勝利しました。次はその場にいた miscalc さんと Kite_kuma くんでやってもらい、その間に私は ARC Writer の chinerist さんから D・E の想定解を聞きましたが、私の解法とはいずれもかなり異なっていそうだったので勉強になりました。tabr くんが、わざわざ家に帰ったにもかかわらず冷えているチームメイトのレーティングを見てほくそ笑んでいたのも印象に残っています。

部屋に戻ると今度は krps さんが B のデバッグをしていました。添え字が 1 個ずれていそうだったので、その辺を直しつつやってもらうと通って良かったです。B は実装込みで結構難しいと思ったので 1000 人も解かれているのは atcoder 参加者のレベルの高さを感じました。

同室で過ごす時間も最後なので、気になることあればなんでも聞いてくださいという感じで打診してみたら、「やった精進」や「黄色から橙になるためには」という話題が上がったので、それについて少し喋りました。少しでも参考になっていれば幸いです。その他にも universal cup などの話をしていたら 1 時を回っていたのでこの辺で就寝しました。

3 日目

3 日間の合宿もあっという間に最終日。この日はチェックアウトの準備のため、余裕を持って 7 時頃に起床します。起きたらとりあえず顔を洗ってからシーツと枕カバーを畳み、散らかしっぱなしの荷物を整理して、JAG スタッフの方にシーツと枕カバーを返却してから食事に行きました。

朝食

この日は ebi_fly さんのチームメイトの noya2 さん、shobonvip さんと合流しました。noya2 さんが前日の ARC-B が全然嘘なのに通ったという話をされていて、確かになんでマルチテストケースじゃないんだろうということを言ったら、\mathbb{X} で強い人達のマルチテストケースのお気持ち表明が飛び交ってるという話を聞きました。その後 noya2 さんと少し話したのですが、私が PCT さんと Nyaan さんの yukicoder 数え上げコンテストのテスターとして認知されているらしくかなり驚きました。今後は writer とかもできるように頑張ります。

朝食から戻った後は部屋にある小さいテレビを始めてつけてみたりして少しゆっくりした後、部屋の鍵を返却して 9 時に間に合うようにコンテスト会場に向かいました。

コンテスト

チーム名 DELIAIR(ユネスコ食文化創造都市)
時間 300 分
問題数 11
正解数 7
順位 6
VS. Speed Star X
VS. The Raspberry Candies X
VS. SPJ X

現地解散後

かっつさんや東大メンバーと少し喋った後、疲れていたので参宮橋駅から真っ直ぐ帰りました。torisasami くんはインターンの面接で失言をして説教されたもののなんか受かったという話をしていました。新宿でほとんどの人と別れた後は Kite_kuma くんと一緒になり、今年の卒論配属が演習の成績で決められているとかいう割と意味不明な話を聞いてびっくりしました。人と話している間は良かったのですが、一人になると急に疲れがこみ上げてきて電車内でもかなり具合が悪くなりましたが、なんとか無事に帰宅できました。

謝辞

JAG スタッフの皆様へ

合宿を開催していただきありがとうございました。私自身 1 参加者として非常に楽しく充実した 3 日間を過ごせました。コンテストに出てきた問題の質・量・解説、運営など、どれをとっても JAG の皆様の並々ならぬ労力の上に成り立っていることが感じられました。2 日目の集合に遅刻したり、コンセントを抜き忘れたりとご迷惑をおかけしてしまったのを反省しています。今後ともよろしくお願いします。

チームメイトへ

急な誘いにも応じてくれてありがとうございました。今回の合宿で DELIAIR の弱い部分がかなりわかったと思うので、また練習しましょう。

ルームメイトへ

合宿期間中は一緒に行動する機会が多くてとても楽しかったです。特に、torisasami と私の意味不明な話も嫌な顔せず聞いてもらって感謝しています。

将棋関係者の皆様へ

将棋ができる競技プログラマーが意外と多くてびっくりしました。これからもオンサイトの機会があれば将棋を持っていこうかと思っています。かっつさんと miscalc さんは次の機会があればぜひよろしくお願いします。

参加者の皆様へ

仲良くしていただきありがとうございました!

まとめ

さすがに疲れた。