クマーの競プロ精進日記

AtCoder赤とICPC World Final目指して頑張ります.競プロ自戦記、アルゴリズムなどについて

JAG 夏合宿 2023 参加記

ICPC OB/OG の会 (JAG) 様主催の夏合宿に参加してきた.非常に刺激的で楽しかったので,参加記を書く.

8/16 (Day 1)

Day 1 - Before Contest

院試が終了して自堕落な夏休みを送っているせいで生活リズムが破壊されており,前日の睡眠に無事失敗した.集合時刻は昼だというのに十分に睡眠がとれないまま荷物を支度して会場に向かう.会場はオリンピックセンターで,聞くところによると中高生の学術系のオリンピックの合宿などに使われたりするそうだ.

荷物を全部担げた方が移動の際に楽だという理由で,昔使っていた登山用のザックに荷物を詰めて来たのだが,これを背負って歩いているうちに昔を思い出して少し長めの距離を歩きたくなってしまった.

ソフトクリームを食べながら代々木公園を突っ切り,汗だくで会場に着くとチームメイトの nok0 と zkou は既に会場にいた.合宿楽しみだねーとか明日問題出すから頑張ってねー (nok0) とか喋っているうちにぬるっと合宿が始まる.Day 1 のセットは過去の韓国の国内予選で,3h 11 問だと聞いてびっくりした.時間の割に問題多くない?

Day 1 - During Contest

問題を紛失した上に内容もよく覚えていないのであまり書くことがない.A 問題で追加のおもりを片側にだけにしかのせられないことはもとの問題文にちゃんと書いてほしかった. 割と簡単な 6 問を通して,あとは椅子を温めて終了.長方形の数え上げが解けそうで解けなかった. 順位表を改めて見てみると,SSRS くんがソロ参加なのに開始 8 分で 3 問通していておったまげた.

Day 1 - After Contest

解説会が半分終わったところで夕食.知らない人に話しかけるきっかっけも特に得られなかったので,元から知り合いの東大生たちで固まって食べてた気がする.院試が終わったとか,rniya さんがまた遅刻したとか,そんな話をしていたら再開の時間になっていた.

残りの問題の解説を聞いて,ふーん結構うちのチームは苦手なセットだなあ…となった.なんか 1 問くらいは解けそうなのがあった気がするけど思い出せない.

部屋の鍵を渡されて同じ部屋の人たちと合流する. てっきりチームで同じ部屋になるものだと思っていたら,同じ大学の人が同じ部屋にいないように割り振られていた.結果的に交流が促進されて良かったと思う.部屋はベッドと机が 4 人分あるだけの簡素なものだった.参加費は 2 泊分とは思えないほど格安だったのでこんなもんだよね.

部屋では簡単に自己紹介をして,WiFi が使えるかどうかチェックしたりした.一応繋がるけどここにいる人たちみんなで ABC に出たりしたらヤバいかもな…って思うくらいの速度だった.

風呂に行ったらめちゃくちゃ混んでいて,シャンプーが付いているシャワー台の数が足りてなさそうだった.風呂の温度は結構高めで気持ちが良かった.

火照った体で眠い目を擦りながら ABC に出る.WiFi は相変わらず心配になりそうなくらいの速度だがなんとかなりそう.競プロはオンラインゲームなのに貧弱回線に優しい.

C は G の簡易版らしく,どうせ G を解かないと意味がないので C を飛ばす.ABDE を書いた後で F で手こずる.行きと帰りで高々合計 1 回,という条件があるときは行きも帰りも前から順に処理するというのはよくある話だが,なにを状態として持てばよいのかがしばらく分からず苦戦した.実装が終わって提出すると WA.かあ~っなんだよそれ.こっちは疲れてるんだから早く寝かせてくれ.ABC は Unrated だし,眠すぎるので普段ならこの辺で投げ出すのだが (おい),同室の 3 人が真剣に解いているのでそんな気持ちになれなかった.かなり気付きづらいミスをしていて修正に時間がかかった.1 ペナで済んだ.

G はどう見てもフローっぽい制約だが,計算量がなかなか落ちない.とりあえず自明なフローの解を書いてみる.フローなら多少計算量が死んでいても通ることはよくあることなのでとりあえず出してみるも,落ちる. あの手この手で計算量削減を考えるも,結局どの工夫も TLE したままコンテストが終わってしまった.解説に書いてあることが頭よすぎて,同室の sotanishy 君となるほどね~って言ってた.

眠すぎるのでもう寝ようかなと思っていたら tokusakurai さんに将棋しようと誘われ,談話室に行って将棋を指した.ちょっと良さそうな将棋だったが結局負かされた.もう全然将棋やってないので何も手が見えないね.

日付が変わるか変わらないかくらいで部屋に戻って消灯した.ベッドが暑くてなかなか寝付けなかった.

8/17 (Day 2)

Day 2 - Before Contest

眠い.眠すぎる.目を開けたら部屋の人たちはみんな起きていた.この日は部屋の人たちと朝食に向かう.こんな早い時間に朝ご飯食べるなんていつぶりだろう,などという話をした.

コンテスト開始が 10:00 で,9:00 から準備と書いてあるがこれはコンテスト参加者も行かないといけないのか…?とみんなで議論していた.少し遅刻して行って知ったが,9:00 に行くのが想定解だったらしい.

今日は JAG の方が作ったセットだと思っていたが参加者有志でつくったセットらしい.チームメイトの nok0 が学会発表でいないため,今日は zkou と 2 人で参加することにした.nok0 が作問しているらしいのでどの問題がそれなのかを考えつつやろうかなと思った.

Day 2 - During Contest

問題一覧

zkou が A を読んでいる間にテンプレートを書く.書き終わって,さあどれを読もうかと言っていたらもう SSRS くんが 2 問ほど通しているのでありがたく追従することにする.zkou が A 問題で怪しげな式を提示してきたので素直に実装すると通る.続いて C を通す.H が解かれているので zkou にやってもらったところ,すぐに解いてくれて,これも通る.次に解かれている K を 2 人で相談する.しばらく 2 人で話したら頭がかなり整理されて,実装に自信が出たので書いたので通った.

この時点で開始から 1 時間から少ししか経っていないのだが,ここからが苦しかった.nok0 が用意したであろう数え上げの問題はやりたくないし,2 人しかいないので D のように実装が重そうなものはやりたくなかった.

E はどうせ閃き一発なのだろうと思って考えてみる.考察が進んで,かなり解けそうなのだが解けない.bitset を持つ全方位木 DP をしたら通るか…?と思って実装したらバグりまくって萎える.なんとかサンプルが通るもジャッジが RE を返してきてキレそうになった.てかこの方針 DOMjudge の環境的に無理じゃね?って言って,この問題に見切りをつけた.

しょうがないので通されている B と J を見る.B は数え上げで zkou 選手が匙を投げていたので考える気が起きなかった.J はグラフ上の未訪問の頂点に動くゲームだから勝敗判定条件を見たことがあるはずなのだが思い出せない.答え→グラフ上の陣取りゲーム – 37zigenのHP

なんかマッチングは関係してたよなー,と思いながらマッチングを考えてみると大体の盤面で完全マッチングに近いマッチングが取れることに気付いた.手作業で 3 * 3 と 3 * 5 のコーナーを確認して,まあどうせ他にもあるんだろうな…と思いながら投げたら AC して zkou と爆笑した.このあとコンテスト終了間際に DELIAIR も爆笑していたので何が起こったのか聞きにいったら,うちと同じことが起こったらしくめちゃくちゃウケた.

Day 2 - After Contest

解説会.やばいセットだとは思っていたが,解説を聞いたらさらにヤバさが再認識された.意外と nok0 が 998 を作っていなくてびっくりした.あとで聞いたら頑張ってジャンルを散らしたらしい.でもまあ J は予想どおりだった.

2 人しかいないし一番の数え上げ人材である nok0 がいないのでこんなものかと思ったが,さすがに B はやらないといけないっぽい.あと D も解説が始まる寸前に解法が思いついて,これも頑張らないといけなかったなあと思うなどした.

この日は終わったのが夕方だったので ARC までやや時間に余裕があった.普段ならこれだけ疲れていれば即刻仮眠をとるところだが,合宿だしやっぱ遊ばないとな~と思って同部屋の人たちと大富豪をした.久しぶりにこのゲームやると楽しいね.序盤でパスすることが tourist 出しとか呼ばれててウケた.いい交流になった.

ARC 20 分前くらいにお開きにして,コンテストの準備に取り掛かる.さすがに回線が心配なので回線が混んでいそうな最初の数分だけテザリングすることにした.ARC は前半でめちゃくちゃ手こずって死を覚悟したが,C を通した時点で 100 位くらいに回復して一安心した.D の解法がすぐ見えて,実装しているうちに最悪ケースの計算量が O(N2 M) くらいになりそうで怖くなる.でもなんか計算量小さくなってる気がするし…と思いつつ投げると一発で通って,うっひょ~ となる.今見返すと普通に O(NM) にしかなってないんだけどね.

数え上げには苦手意識があるので苦しみながら E を考えた.なんとか残り 10 分くらいで O(N6) くらいの解法が思いついて,これ 2 乗の DP で高速化できるか…?まあどうせこの残り時間で書くの無理やろなあ…とか言ってたら終わった.5 完が割といて,D 通した直後に比べて順位がめっちゃ落ちててちょっと残念だったけど,結果的にはかなり成功してよかった.

この日もまた将棋を指した.miscalc くんがべらぼうに強いことを知ってびっくりした.tokusakurai さんといい,同じ学科の 1 つ上と下の競プロプレイヤーにこんなに将棋強い人がいることある?? 2 人と指して,両方負けたけど刺激的で楽しかった.特に miscalc くんとの将棋は結構アツい戦いで昔を思い出せた.

8/18 (Day 3)

Day 3 - Before Contest

2 日間で 4 つもコンテストをやってさすがに疲れた.眠気が Day 2 と比べものにならないが,チェックアウトの時間がシビアだったのでそんなことを言っている余裕もなかった.お腹だけは空いていたので食堂でおかずを食べられるだけ食べつつ,torisasami さんと昨日の ARC の話をした.

今日は 3 人揃っているし,昨日まで不甲斐ない順位ばかりだったし,今日は JAG の人が用意した 5h セットだったから,なんとか満足できる順位にしたかった.

Day 3 - During Contest

私が A,つちのこが B を通す.zkou と相談の上,簡単に解けた J を書いていく.nok0 が I を数分で書けると主張し始めたので交代し,その間に適当に問題を読んでいく.G は…7 sec だし無理ゲーそう.H は文字列だしロリハの用意もあるから行けそうに見える.

I が通ったので J の残りを書いていく.書けて提出したらなぜか WA が出るので不思議がっていたら,致命的なコピペミスがあったことが発覚し,思わず叫んでしまった.AC.

H を見返してみるとやっぱりハッシュとトライ木で log 2 個くらいでできそうだが,実装コストがそこそこ重いので先に nok0 に E をやってもらう.数え上げなのですぐやってくれると思っていたが,珍しく nok0 が手こずっている.なんとか AC したようなので H に取り掛かる.この時点で H に提出しているチームもなかったので本当に解法が合っているのか不安になった.書き終わって実行すると一発でサンプルが合う.マジ?!と叫びながら提出すると FA!FA は合宿で 1 回くらいやりたかったのでとても嬉しかった.

zkou と nok0 が C を解いたらしいので nok0 に実装してもらう.AC が出ている K について zkou と相談する.

zkou「ダイコネあればできるね」
私「今日用意してないよ」
zkou「アルゴリズムなら覚えてるけど」
私「???」
えー…知らんけどそれ絶対アルゴリズムめんどいやん,やるのめんどいけどまあやるしかないか…と思いながら zkou に説明してもらう.理解はできたが,資料なしで実装するの重いなこれ….

nok0 が C で炎上しかかっていたので zkou が救援に向かう間に,K の実装を考える.なにぶん初めて実装するアルゴリズムなのでどのような値を保持しなければ行けないのか判断するのに時間がかかった.

C が通ったので zkou に横で見てもらいながらダイコネを書き始める.なんとか書き上げてサンプルを実行してみるとなんと一発で合う.えそんなことある???でもこれ Yes/No 判定だからどっかでミスってても分からんよな…とか思いつつ提出してみるとなんと通ってしまう.さすがに意味不明すぎて興奮した.

1 時間強の時間があったので 3 人で D をやった.蓄積した疲労のせいか,もうなんか色々バグったけど,なんとかいい順位を取って終わりたいな,という気持ちだけで色々やって,残り 8 分のところで 6 回目の提出が通った.さすがにもうできることもなさそうなので,もう終いでいいかな,と言って 3 人でお菓子を取りに行った.

Day 3 - After Contest

解説を聞いて,F と G でふーんと言っていた.F はまだ可能性あったけど G はマジで無理だ.
順位表の凍結が解除された.

最高の結果が出せて,とても嬉しかった.正直 tonosama か SSRS くんのどちらかには負けていたと思っていた.最後の最後で本当に良い思い出になった.

このあと打ち上げか何かがあるかなと思ったけど,みんな疲れていたのですぐ帰った.


Day 3 の終了後だけなぜか優勝者インタビューがあったのでそこでちょっとだけ喋った.チーム名の由来とかどうでもいいことを喋ったけど,普通に運営の皆さんや参加者の皆さんへの感謝を言えばよかったね.代わりにここに書きますが,運営の皆さん,交流して下さった皆さんのおかげで 3 日間本当に楽しかったです.ありがとうございました!