JOI2024/2025春合宿参加記
これを書いているのは3/20の19時頃、つまり初日が終わって帰宅してすぐです。本来、明日以降に向けた精進や睡眠などのコンディション調整をするべきなのは言うまでもないことですが、この5日間の思い出が一生忘れられない、忘れたくないものになるということは疑う余地もないため、なるべく新鮮な状態で書き留めておきたいと思い、これを書いています。
1日目
大きく分けて表彰式・交流会・プラクティスがありました。
表彰式
去年は大遅刻をしてchokudaiさんのスピーチを聞き逃したうえ自分の表彰タイミングにも間に合わないという大幅なやらかしをしました。今年はTCA部員6人が参加するということで、予定を合わせてきたので問題なく時間に余裕をもってたどり着くことができました。(代わりに1人が遅刻してきたのですが...まあ大して遅れていないのでセーフでしょう)
駒場東大前駅からの道で、並木中等の4人と会いました。おかげで道がわかると思って安心したのですが、去年来たのがそのうちの2人ということで大して変わりませんでした。近くに大きな公園があったことを覚えていたので、近くまでついてからはスムーズでした。
TCAのメンツは4人だったので、他の2人の合流を待とうかと思いましたが、割と時間がかかるということで先に4人で中に入りました。中に入ると、名札を受け取る場所がいくつかあって、該当するものが2つあった後輩が困っていました。僕は普通に名札を受け取れました。

協賛企業?のグッズがたくさん並んでいるゾーンにNafmoさんがいたので挨拶をしました。相変わらず話しかけやすくてとても助かりました。緊張がほぐれたと思います。
会場に入り、まだ時間が割とあったので、TCAで合流して話したり、中学の後輩と話すためにJOIGゾーンに行ったりしていました。JOIGゾーンでTwitterで知り合った人と会い、おお~となりました(語彙)。
会場直前ぐらいにTCAの残り1人から電車を乗り過ごしたという報告があり、呆れていました。
表彰式では、JOIG銅賞だった後輩がいろんな賞を受け取っていて凄いなあと思うとともに自分も勝手に喜んでいました。自分の表彰でも、クリスタルを受け取ることができ嬉しかったです。

写真撮影でJOI優秀賞が忘れ去られるなどのトラブルもあったものの、問題なく表彰式は終わりました。初めてchokudaiさんが生で話しているのを聴けて嬉しかったです。
交流会
つづいて交流会に移ります。去年と同じようにランダムにグループ分けされました。当然のごとく同じ学校はバラされたみたいで、同じグループには同じ学校はいませんでした(そりゃあそう)。
同じテーブルにはreiくんやロッチくんがいました。これも去年と同じようにシール交換をしていって交流していく感じでした。去年と違う点としては、最初から会話デッキ「共通点を探そう」が用意されていたことでしょうか。お互い名乗り合ってから「さて、共通点はなんでしょうか」って話し始める感じで行けたのでだいぶやりやすかったです。真面目に共通点を考える人もいれば、「同じ2番テーブル!」とか「Twitterをしている」とか「C++を使っている」とかそんな感じで雑に終わらせている人もいて面白かったです。
去年と違って最初からシール数に応じた景品の話がされていたからか、活発に交流している人が多かったような気がします。(去年の僕が全然交流をしていなかった可能性はありますが...)
先日の関西旅行で会った人たちともまた会えて面白かったです。
しおむすびさんと初めてまともに会話できて本当に嬉しかったです。(僕はしおむすびさんの強火ファンです)
さて、シールの枚数で競ったのですが、そもそも僕のシールは最初から34枚しかなく、上界がそもそも低かったので勝つことが不可能でした。そもそも28人としか交流できていなかったのですが、若干の粗があって面白いなと思いました(?)。

さて、これもまた去年と同じように、チームが再編成されました。割とチーム決めに手間取ったのですが、最終的に某JOI銀erや某JOIG金erと一緒のチームになりました。
今年は紙を使って橋を作り、その上にいくつ消しゴムを入れられるかという勝負だったのですが、最初からほとんど工夫せずとも13個の上限の消しゴムが載ってしまったため、ルールがリアルタイムで更新されていきました。最終的にはスマホがのせられていて面白かったです。
自分のチームはスマホを載せた時点で崩壊してしまったのですが、消しゴムを無限に載せるなら極めて有利だったと思います。何故なら、僕が紙で棒を作るのが得意で、その棒なら消しゴムとカバーの間を串刺しにすることができたからです。ですが、チューターの人に止められてしまったので断念しました。
ほかのチームではスマホが2台載っているところもありすごいなあとなりました。(4台載ってたところもあったらしい)
去年よりたくさん交流できてよかったです。

プラクティス
交流会が終わったらプラクティスがあります。その前に注意事項の説明などがありました。
JOIGが難易度順に並んでいること、JOIが1日3問固定になったことなどがびっくりでした。それよりも大きかったのが提出結果の表示制限でした。なんと、実行時間やメモリ使用量が一切見ることができない仕様になったのです。かなり大きな変更だと思いました。
リバースエンジニアリングの禁止がルールに書いてあって面白いなと思いました。というか今年の提出結果の表示制限により、リバースエンジニアリングはかなり難しくなっているなと思いました。僕はリバースエンジニアリングに詳しくないので、相対的にやや有利になったかなと思いました。
あとはQ&Aがいつも通り面白かったです。全完したあと解説スライドを作り始めるの面白すぎました。(勝手にE8さんあたりがやったのだろうかと予想)
ほかのルールはまあそりゃそうだろという感じのルールしかありませんでした。やはり提出結果の表示制限が一番衝撃的でしたね。
キーボード持ち込みの詳しいルールによると記名が必須ということで、これ事前に言ってほしかったなあとなりました。記名していなかったので相談したところ、紙に書いて挟む方法を提案された?のでそうしましたが、どうなったかは明日わかります(最悪明日はキーボードが使えません、かなしいね)
あとマウス持ち込みができるのを初めて知りましたが、自分は普段マウスにはあまりこだわりがないため、備え付けの(?)マウスで十分使えました。大きすぎず掴みやすくて使いやすかったです。
飲み物やおやつを持ち込んでもよいらしいです。用意されているもので十分かなと思っていましたが、どれくらい用意されているか明日の様子を見て、持ち込みをどうするか決めようと思います。
プラクティス中に私語が多いのが気になりました。まあ確かに禁止はされていないですが...
日本語入力と半角入力の切り替えがうまくいかなかったので質問を投げたところ、しばらくしたら助けに来てくれました。右上のところから直せるということを教えてもらえました。
CommunicationTaskを初めて触ったのですがなかなか楽しかったです。16bitで抑える方法は思いつきませんでしたが、よく考えたら16文字以下も使うことで2^16個以上の情報を載せられるなあと思いましたが、実装ができませんでした。
OutputOnlyは触る時間がなかったのですが、まあ出ないだろと思っています。
帰宅
そんな感じで初日を終えました。TCAのJOIG春er2人と帰りました。明日から頑張ります。
2日目
競技1日目です。家を出る時間は普段の学校とほぼ同じなので苦労はなかったです。いつも通り5時ごろに目を覚まし、だらだらと朝を過ごした後に7時頃に家を出ました。
SuperConの領収書を1日遅れでポストに投函し、昨日と同じように後輩と駅で合流しました。後輩はJOIGなのでまだ今日は競技はなく、気楽そうでした。僕が緊張している様子を見たかったらしいですが、僕はさほど緊張はしていませんでした。
そんなこんなで話しながら目的地に向かっていたら乗り過ごしてしまいました。集合時刻である8時半に間に合いそうもなく困りました。頑張って走りましたが半には間に合わず。ただ、この遅れは大して影響がなかったです。明日は乗り過ごさないようにします。
控室に入ると、前にいくつか栄養補給用の軽食が用意されていたので取りました。飲み物でお腹をこわしがちなので水を選択し、他はおいしそうなものと糖分が補給できそうなものをとりました。

そういえば、遅刻した人がいたらしいです。朝早いし厳しいよなあと思いました(特に近くや、微妙な距離のところに住んでいる人たち)。
競技時間15分前ごろに競技会場に移動しました。自分の席を確認してささっと移動しました。ちなみにキーボードは無事持ち込めていました。それはそうとキーボードが既にささっていた人がいて、チューターに確認をとっていましたが、結局競技が始まる前に全員それをする時間があって面白かったです。
競技1日目
さて、1日目の競技が始まりました。5時間という長い時間、ただしそれは20時間競技の最初の5時間と捉えることもできると思います。5時間というと、僕が起きてから会場にたどり着くまでよりも長い時間だなあなどと思いながら競技と向き合いました。
まずは封筒を開封し、問題文を取り出します。3問あることは昨日言われていたので、3問分の問題文を分割しつつ、問題をチラ見しました。チラ見したところによるとB問題がCommunicationであることがわかったので、まずはこれを読むことにしました。
問題概要を把握し、まあどうせ二進数でなんとかやるんだろうと思いつつ、部分点の3点が自明であること、それ以降の部分点が連続的に定められていることなどを把握し、今度はA問題を読みました。辞書順で降順という条件は難しいなあと思いつつ、小課題1くらいは取れるかな?と思いました。
ということでA問題を実装するために、ここで初めてPCに触りました。約9分くらいかかっていますが、割といい感じに2問の概要を把握できたと思います。一応概要を計算用紙にメモしましたが、字が汚すぎて後から読めないという事態が発生しました。ちなみに僕がPCに触ろうと思った瞬間に前の人が封筒を開けていて、タイミングが揃って面白いなと思いました。
最低限の環境構築は得意なのでサクッと終わらせました。PC(というか仮想環境)が重かったからか、補完が最初出てこなくて焦りましたが、VSCodeを開きなおすなどしてみてもあまり変わらなかったので一旦諦めました(その後治りました)。
A問題を実装してみて、サンプルが通ったので提出するもWA。何度か直して提出してみてもWAのままだったので、ランダムテストを書いてみることにしました。Nが小さいケースでは順列全探索するだけで愚直解ができるので、この判断は割としやすかったです。ランダムテストの結果、自分の解法が派手な嘘解法であることが判明しました(同じAがあったときの処理が甘い)。直す方法も思いつかなかったので、C問題に行きました。B問題の3点をここで回収しても良かったのですが、どうせあとで色々試すうちにとれるだろうということで無視しました。ここまでで約1時間が経っていたと思います。
C問題は、一番簡単そうに見えました。自分はUnionFindに自信がないので、どうやって実装するか悩みました。小課題1~3が可能そうに見えたので、計算用紙に「50点はとれそう」とメモしつつ、小課題2をメインで考えます。かなり時間をかけて考えたのですが思いつかず(ここまでで2時間くらい?)、一旦小課題1をワーシャルフロイドで、小課題3を01-BFSのようなもので解きました。(30点)
次にB問題に向かいました。このあたりから記憶が曖昧です。いろいろな解法を考えていましたが、最後の方に1が増えたときの対処が難しいなと思っていました。工夫した解法を投げてみたら3点が返ってきて悲しかったです。その後もinゼリー等を食べながら改善を続けるも、最後の方はWAしか返ってきませんでした。ちなみに配布されていたテスト用のコードに不備があったらしいのですが、僕が解き始めたころには直っていました。ラッキーですね。そのコードも使いつつ色々試したのですがうまくいかず、時間だけがどんどんなくなっていきました。ほとんど進捗がないので時間が雑に飛びます。Bから離れたのは競技開始から4時間くらい経ったころだったと思います。
ちなみに、2時間くらい経つとまず集中力が切れてきました。ARCならここで終わっていますからね。それ以降はかなり厳しいなあという感じでしたが、頭の回転は多少遅くなっている感じがしたものの体調は大丈夫だったので良かったです。
さて、Bから離れて流石にA問題の部分点を取りたいと思ってAに向かいます。少し考えると、判定を区間スケジューリング問題に言い換えることができることがわかったので、実装します。サンプルが通ったので提出しましたがWA。結局競技終了までWAはとれず、1日目は33点で幕を閉じました...
競技終了後
機器のトラブルやテストコードの不備により、競技時間の延長をされている方が何名かいらっしゃいました。お腹がすいていたので食堂にさっさと向かいました。お弁当が用意されていました(スマホは持ち込めないので当然撮れず)。
食堂ではみんな競技の振り返りをしていました。みんなすごいなあと思いました。tatyamさんが「いかがでしたか?」と聞いて回っていたので、「A問題が難しかったです」と答えたところ「わかる」と言っていました(?)。
延長が入った人たちが食堂に入ってくるころに控室に戻りました。控室では何人かが謎のカードゲームをしていましたが、自分はルールを知らないのと輪に入っていけるほど関係値が深い人がいなかったので、少し遠くから眺めていました。
そんなこんなしていたら1日目の順位表が配られました。27人中19位でした。ギリギリ10位台ではあるもののなかなか厳しいなあと思いました。カードゲームをしていた人たちが「関口!?」って言っていて申し訳ない気持ちになりました(それは違う関口さんですし、強さが全然違います)。しおむすびさんがその時にこちらに視線を向けてくれたので優しいなあと思いました。
解説会場(というか競技会場)に戻りました。解析が始まっており、問題に再び提出などができるようになっていましたが、僕は特に心残りはなかったので提出などはしませんでした。解説スライドが配信されていたのでそれをダウンロードして流し読みしていました。
解説自体は、5時間の頭脳競技+昼食直後、しかも暖かい部屋ということでほとんど寝てしまいました。が、とりあえずA問題やB問題がめちゃめちゃ難しいということ、Cが一応今日の可能枠であったことなどがわかりました。
JOIG勢は少し早く終わっていたようで、待ってくれているらしかったので、解説終了後に環境の動作確認を済ませた(と思った)人から退出してよいとのことだったので退出しました。
その後は昨日と同じように2人と帰りました。JOIGの方は講義や、交流会という名の牽制し合い(?)のようなものがあったようです。僕も競技前に交流するのはバチバチしがちなので良くないと思います。
明日からはJOIGも競技なので、共通問題なども楽しみです。

3日目
会場に着くまでの道のりはもう慣れたものです。土曜日だったので多少ダイヤが違ったりしましたが、問題なく後輩と合流し会場に向かいました。昨日と違って乗り過ごさなかったので栄養補給用のお菓子を多めに確保することに成功しました。一応持ってきたのですが、持ち込む必要はなさそうだったので出さずに、競技会場へ移動しました。
ちなみに何故か昨日より緊張していました。ここで負けたら取り返しがつかないとかそんな感じでしょうか。JOIGとの共通問題で後輩に負けたくないというのも多少はあったと思います。

競技2日目
当日朝にTwitterでも宣言していた通り、今日は少し立ち回りを変えました。1日目では、まず3問をざっと眺めた後に、取れそうな小課題からとっていくという方針でした。しかし、3問に中途半端に時間をかけてしまったり、時間を書けたのに点数を得られなかったりしたので、2日目では最初から3問を読むのではなく、初めに取り組む一問を決定し、その問題である程度の点数が取れるまで粘って次の問題に行く、といいう方針を立てました。
昨日と同じく、競技が開始したらまず封筒を開きます。問題ごとに紙を分けつつ、CがCommunicationであることを把握します。Batchの2問から手を付けたいですが、なんとなくの勘でBを選択し、Bを読み始めました。
部分点1は順列全探索で自明ですが、その順列にするまでの交換回数をうまく求める方法がわからなかったです。(BFSでできるが、もっと簡単な方法あるのかもなあ)
部分点2はN^2通り全てを作るということで、少し考えると前半N個と後半N個がそれぞれ1~Nの順列となっていることが必要条件であることがわかります。さらに考察を進めると、2つペアのうち最初に出てきた方に0、次に出てきた方に1を割り当てた配列を考えて、その配列を000...01111...1にするまでのコストを考えればよいことがわかります。バブルソートの交換回数なので転倒数を求めればよいです。
さて、ここでやらかしが入ります。Nが小さいことから、地点を移動するごとに差分更新でO(logN)で転倒数を更新する必要などなく、各地点から普通に転倒数を求めても間に合います。これを考慮できず、更新のために慣れないBITを書きバグらせました。
51分時点で部分点1の5点をとった後、この事実に気づいて実装をし直し、部分点2の20点が通ったのは2時間36分時点でした...
そういえば環境構築について言及がないですが、昨日と同じように問題なくできていました。今日はコンパイルと実行終了時にメッセージが出るようにしました。
さて、次にA問題を読みます。かなり焼けそうなにおいがしたので、怪しげな山登りを適当に書きます。提出しつつトイレに向かいましたが、返ってきたときにはWAで落ちていました。(3時間10分時点)
首を傾げつつ、4次元DPと4^Nを実装するだけの小課題を回収して9点を得ます。ついでにassertを外して提出してみたところ、なんと追加で18点が得られました!枝刈りがかなり効いていたのだと思います。(3時間32分時点)
Cに向かいます。Communicationですが、この手のものは二分探索の気持ちで色々やるとうまくいくことが多いです。その考えで行くと小課題1は割とすぐに方針が立ち、小課題2もできそうな気配がしました。あまり共通部分もなさそうなので小課題1を実装します。なんかここでめっちゃ沼った気がします。(沼ったのはBだったかも)
二分探索を4通りくらい実装する必要があり実装重いな~と思いながら提出するもWA(3時間51分時点)。いろいろ直して7点を得ます(4時間15分時点)。
小課題2について考察します。偶奇で分ける方法をmod 3以降にも拡張させることで、宝箱と鍵を分離することができます。あとは小課題1と同じように二分探索を行うだけです。ちなみに、頂点0が答えに含まれるケースはまた違う実装が必要です。ということで小課題2だけで二分探索が6パターン出てきます。なんとか実装力で押し切り、13点を得ます(4時間41分時点)。
残り時間は少なかったですが、とりあえず木のパターンについて考えます。放射状に辺を配置するのを各頂点に行った後、1→0となっているような辺を見つけることで鍵の位置が特定でき、宝箱も同じような方法で見つけることができます。
方針が立ったので全力で実装します。最後の宝箱を見つけるパートは考察時間が惜しかったので鍵から一番離れている地点にしました(これは正しいです)。
ということで、時間ギリギリに15点を得ることができました(4時間57分37秒時点)。余裕で昨日の点数を超えられてよかったです。
競技終了後
JOIGが終わった後輩ともう一人の筑附勢と合流し、昼食会場に向かいました。軽食を多めにしたからか、食欲が全然なかったです。後輩は全然ダメだった~みたいな感じで嘆いていましたが、順位表が配られてみると2位でした。流石。
僕はというと、昨日と変わらず19位でした。今日の順位だけで見ると16位だったので、昨日のやらかしがだいぶ効いているなあという感じがしました。
C問題で35点以上を取っているのは僕も含めて5人しかおらず、そのうち3人は上位3人だったのでだいぶ嬉しかったです。
割とリスクのある戦略でしたが、なんとか刺さってよかったです。明日もまた少し戦略を変えようと思います。今日はなんとか成功しましたが、Bでもう少し時間がかかっていたらCの15点に手が届かなかったですし、Bを後に回していたらAの部分点がもう少しとれたかもしれませんでした。やはり問題全体を見て概要を把握してから、取り組む問題を決めるべきだと思いました。
解説
JOIGとの共通問題があったので解説は同じ会場かなと思っていましたが、別々でした。(解析の時間も兼ねているからでしょうか。)
squareさんの解説が面白かったです。最初の「次の解説担当者の方、前に出てきてください。…次の担当者の方……。……。なぜ出てこないんでしょうか(ニヤニヤ)…。はい!ということで私square1001が解説を担当します」が茶番すぎて面白かったですし、満点解法の5logN回解法を解説し終わった後に
squareさん「まだスライドの枚数がありますね。」
「「4logN回で解けます!!」」
そしてこの解法を説明した後に、
squareさん「まだスライドの枚数がありますね。」
「「「「3.465logN回で解けます!!」」」」
となっていたの、強すぎて面白かったです。なるほどな~~という感じでした。小課題については解説と同じ考察ができていたのでよかったです。
前の人が、本番と同じコードを投げたら点数が上がったといって騒然となっていました。(当然アピールしたみたいです。結果は明日かな)
解説が終わって退出したところ、JOIGの方がまだ解説中だったので廊下で少し待っていました。例のごとく2人と合流し、帰宅しました。
ABC
ABCにunratedで出ました。テンプレなしで一応春合宿っぽく解きました。Eが何もわからず、この記事を書き進めていました。
4日目
今日は後輩が寄り道するということで朝は別々に来ました。流石に乗り過ごさず、ちゃんと会場にたどり着きました。もう4日目なんだからここの描写要らない気がしてきましたね...
昨日までと同じようにお菓子を回収します。ラムネ味のゼリーが無くて少し悲しかったです。ピュレグミがおいしいので多めにとりました。

今日は頭痛が少しありました。少し体調が悪いときの方がかえってモチベーションが出てきます。これやめた方が良いと思うんですよね(そりゃあそう)。
ちなみに昨日のアピールは棄却されたみたいでした。この結果なら、TLEしても何回か投げてみることに価値が出てきそうだなあと思いました。
競技3日目
さて、立ち回りを変えると昨日書いていたと思います。今日はどんな立ち回りをしたかというと、ほぼ1日目に近いです。すべての問題に目を通し、難易度感を確認してメモをします。何点ぐらい取れそうかも把握します。
今回はAが一番取れそうだったのでAから解いていきます。難易度を決め打つとシミュレーションがNlogNでできるので、クエリごとに決め打ち二分探索をします。
36分時点で初提出しますが、WAでした。なんかジャッジがこの時すごく重くて、結果が返ってくるまでに5分くらいかかっていた気がします。
色々直して、53分時点で14点を得ます。小課題ごとに分けていたやつを外して投げると24点になりました。この流れいつもやってますね(計算量見積もりをしましょう!)。
割と快調な気がします。早めに大きめの点数を取れて安心しました。Bに向かいます。
Bは考察が難しいです。全探索は普通に書けるとして、3次元DPをとりあえず組めばある程度の点数が取れることがわかります。その実装をする前に、貪欲的な解き方で何かないか色々考えてみます。とりあえず「?」が固まっているところはまとめたほうがよさそうですし、両端の文字に注目するべきだろうということもわかります。ただ場合分けが多く実装が大変そうだったので、一応方針だけまとめて3次元DPの実装に移ります。2時間5分時点で4点を得て、C問題へ向かいます。
最初に目を通したときにもわかった通り、Cは本春合宿初のOutput Onlyでした。とりあえず小課題1は手書きできそうなので考えて、提出します(2時間19分時点)。WAが返ってきました。睨んでいると、出力形式を普通に間違えていることがわかります。呆れながら再提出すると16点が取れました(2時間25分時点)。
さて、ここでAに戻るか、Cで粘るかで迷いました。3時間半くらいまではCで粘ることにし、考察をすすめます。この問題は解法の正誤判定方法が独特で、これも考察に役立ったと思います。僕は考察中あまり紙を使わないのですが、今回はたくさん(といっても1枚ですが)使いました。
上位bitから順に決定していくことで5+4+3+2+1=15手で解けました。これを気合で実装しようと思ったのですが、普通にうまい実装方法が思いついたのでそれをしました。投げるとWAが返ってきて困りました。
上位bitを決定した後に下位bitに下がる際に今までの結果をリセットしなければならないのを忘れていました。それを直して無事、55点が取れました!今回の春合宿では僕がとった一問の点数の最大値です(説明力)。もちろん明日更新するかもしれませんけどね...!
その後はAを考えていました。傾きが単調増加な関数になりそうだったので、微分して傾きを二分探索してみようとしていましたがうまくいかず。ここの35点はとりたかったですね~...
最後の方はずっとBを投げていました。3次元DPが通らないのはおかしいと思って、intをshortにするなど色々試していましたが変わらず...
競技終了後
ぷらにゃさんと会話しました。Bはちゃんと難しいらしくよかったです。Aがそれっぽい関数になりそう、という話も聞けて良かったです。
今日は弁当の写真を撮りたかったので、控室に一回戻ってスマホを回収しました(そもそも昼食会場に時計がなく、食べるのが遅いので遅刻の危険がややあったのもあります)。
昨日と同じように2人と食べていました。これもまた昨日と同じように後輩が絶望していましたが、これもまた昨日と同じように順位表が配られたら別にそんなことはなかったです。もっと自信を持って良いのになあと思います。
昼食会場ではtatyamさんと話しました。明日が最終日ということでどれくらい点差が覆るのかなどの話をしました。

順位について書いていませんでしたが、なんと19位でした。何が「なんと」なのかというと、3日連続で19位なのです。運命的なものを感じます。安定感があるとも言えます。
控室に戻る前にちょっと話そうと思っていたら、JOIGの方は解析がすぐに始まってしまったので僕は控室に戻りました。話し相手もいないしなあと思っていたら、なんとsquareさんが話しかけてくれました!
僕の順位より上の人が全員100点を一度は通していて、僕より下の人は全員100点を一度も通していないということで、僕も100点を十分狙える位置にいるといわれて嬉しかったです。あとは得点分布がやばい春合宿の順位表を見せてもらいました。やばかったです(語彙力)。
解説
一番最後にBの解説があったのですが、とても凄かったです。小課題3の時点で17通りの場合分けを処理しきる必要があったり、最後の方にセグ木上の二分探索を要求されたりと、とても5時間で解ける問題ではないなと思いました。自分が少し考察したものの片鱗を感じたので、全然わからないなりに雰囲気だけつかめてよかったです。春合宿来てよかったなあと思いました。わからなくても、難しそうな問題の解説を聞いているとテンションが上がります。まあわからないんですけど。この問題の解説ができるみつばちさんすごいなあと思いました。
ちなみにその後控室でぷらにゃさんにBの難易度感を聞いてみたところ、12より難しいらしいと返ってきました。アルゴリズムの難しさもありますが、気合いの場合分けがすごく大変そうだなあという感じでしたね。
帰り
帰りました
ARC
ボロ負けです。なんでRatedにしたんですか?という話です。ちなみにARC直後に今日の分を書いているので、もし雑だなあと思ったなら原因はこれでしょう。div制になってからのレート変動は合計-240らしいです。面白いですね(ほんとか?)。
翌日に追記しているのですが、ARCでもJOIの立ち回りをしていて面白いです。AからDまで目を通して多少考察し、一旦投げてみるというのをしていました。3日間も春合宿をやっているうちにARCの立ち回りまで影響されていました。
5日目
特にトラブルもなく、普通に会場にたどり着きました。途中でPCTさんを見かけました。控室にも姿を見せ、大ブーイングが巻き起こっていました(みんなPCT問嫌いすぎじゃないですか...?)
昨日からラムネ味のゼリーがなくなっていて悲しい気持ちになっていましたが、それはそうと必要そうなものをとって待機します。待機していたら後輩から「そっちにペットボトルの水ありませんか?」って来たので控室にあった水をデリバリーしました。

今日は朝から異様にテンションが高かったです。100点を一回くらいはとりたかったので、3問のうちどれかに特攻する作戦を立てていました。それもあってか、早く競技が始まらないかな~とまで思っていました。競技開始前もずっとニコニコしていて周りから見たらだいぶ不審だったと思います。まあ普段から不審かもしれませんが。
競技4日目
問題を開いて並べます。A問題がCommunicationでしたが、提出するファイルは一つのようです。B問題はグラフの問題でした。グラフに苦手意識はないので、特攻する問題をB問題に決めます。ひとまずC問題の部分点を取りに行きます。
12分55秒時点でCの8点をとります。正の点数を得た時間が4日間で一番早いです。以降の小課題は取れそうになかったので、Bを読みます。
クエリ平方分割ができそうな感じがしたのでこの方針で考察を進めていますが、一度に動く頂点が多すぎることから難しいとわかります。TLが7.5secあることから、クエリ平方分割さえできれば満点解法になりうると思ったため、どうにかできないか考察しますが、できそうにないので部分点を考えました。求値クエリが少ないときは、その時点より前のクエリのうち関係のあるものを処理すればよかったりなど、部分点ごとにポイントをまとめ、ひとまず愚直で解ける小課題2から実装を始めます。
小課題1も愚直で通ると思っていたら嘘だったり、WAを連発したりしてかなり沼ります。初提出は1時間33分時点でしたが、8点をとれたのは2時間7分時点でした。小課題1は簡単な高速化をすれば通るはずなのですが、一生WAが消えないので一旦小課題4と5を取りに行きます。6もとりたかったのですが取れず、2時間42分時点で38点を得ました。
引き続きBの考察を続けますが、何もわかりません。わからないので一旦A問題を解きに行くことにします。論理回路ガチャガチャ系(?)の問題なので頑張って考えます。細かい用語が全然わからないのですが、とりあえずnotのやつを全部0、それ以外を1にすると1が返ってくるのは自明で、そこから少しいじって0になるかどうかでいろんな情報が得られそうです(ふわふわ考察)。
3日間を通して、Communicationは割と得意だなあと思えるようになっていたので真面目に考察します。最初は4N回使うというなかなかひどい解法しか思いつかなかったのですが、N回で済ませる方法はすんなり出てきました。あとはlogN回ずつ使って特定していくやつをやります。するといろんな小課題が通ります。4時間29分時点で1点、4時間30分時点で10点、4時間46分時点で27点を獲得します。
その後はCの高速化をして投げまくっていましたが通らず。最後になって、B問題の小課題1がWA落ちしてるのを流石に通したいなと思って全力で実装し始めました。最後が暇だと面白くないので、最後まで全力でコーディングして楽しめたのはよかったのですが、またWAでした。何か根本的な勘違いをしていそう...
競技終了後
ということで4日間の競技が終了しました。
昼食会場に移動するとき、今日は後輩が生き生きとしていました。終わった...みたいな感じの時でも全然勝っていたので、生き生きしていたので当然勝っていました。JOIG春合宿2位でEGOI代表になれたみたいです。おめでとう~
昼食会場には見慣れない人がいました。(あとで判明することですが、maspyさんでした)

順位表が配られました。総合17位、今日の順位は11位でした。最終日に良い成績を残せてよかったです。これで下がっていたら消化不良だったのでよかったです。ただ、16位の17さんとはだいぶ点差が離れていて難しいな~と思いました。結局最後まで100点は取れませんでした。
1位はしおむすびさんで、今日の点数では2位と30点以上の大差をつけていました。流石だなあと思いました。
解説
解説が三者三様という感じで面白かったです。maspyさんの証明の詰め方が普段解説や記事で見る通りだなあと思いました。tatyamさんもなんかtatyamさんっぽかったです(語彙力)。
どうやら僕が特攻したB問題はJOIGの共通問題ではなかったことからもわかるように一番難しい枠だったようです。それにしてはそこそこ点が取れたので良かったです。
アピールがないか確認する際に、「自分がIOI代表にふさわしいことをアピール」し始める人がいて面白かったです。アピールってそういう...?あと、hiikunZさん(間違ってたらごめんなさい)が、アピールを早く締めきれ!!ってずっと言っていました。
代表選手発表
春合宿最後の解説が終わったら、表彰式の会場に移動して代表選手発表がありました。自由席で困惑しました。式典ではないからでしょうか。
司会のE8さん(たぶん)がやたらためるなあと思っていました。ためすぎてみんながざわざわしてしまっていました。日本代表が如何に凄いかを語っていましたが、そんなことはここにいる人間なら誰もが知っていることだと思いました(参加者以外に向けた解説なのかな)。
ということで無事にIOI代表の4人+EGOI代表の4人が確定しました。おめでとうございます🎉🎉🎉
終わった後はフリータイムになりました。(スマホの電池がなかったので写真がなく...)
なふもさんが来ていたので喋りました。喋るたびに恐るべきコミュ力だなあと思います。話しやすいです。まだ会ったことのなかった筑附OGの方とも会えました。
まとめ
5日間、本当に楽しかったです!最初で最後のJOI春合宿だったわけですが、マジでめちゃくちゃ楽しくてよかったです。語彙力無くてすみません。強い人をたくさん見かけたり、すごい解説を聞けたり、そして何より日本トップレベルの中高生競プロerたちと同じ土俵で戦えて光栄でした。代表争いには遠く及ばない点数ではありましたが、個人的には満足のいく結果となりました。ありがとうございました。
ここまで読んでくださってありがとうございました。衝撃の事実なのですが、この記事はなんと約15000字あります。ここまで読んでいる人、やばいだろ 本当にありがとうございます。