こんにちは、kazuppaです。競技プログラミングなどをしています。
JOI2025/2026セミファイナルに参加したのでその記録を書きたいと思います。
day1まで
1月上旬はのんびりJOIをやってました。
12/31に某JOI除夜コンをやっていました。当時難易度6以下の未ACはJOI Posterだけだったのでそれにはゼエゼエいいながら結果優勝していました。
また、この頃藍月なくるさんと棗いつきさんの沼にどっぷりとハマっていたと思います。どちらも神なのでぜひ聞いてくださいお願いします。
1/17くらいから本格的に精進を始めたと思います。趣味としてずっとやっていた音ゲーを休止し、登下校中はずっとスマホで考察をし(スマホコーディングも)、食事中や風呂中、お布団の中でも頭に入れていた問題の考察をしていました。
このころは難易度9を埋めるのがメインでした。正直10の難易度が分からなすぎて逃げていたという話もあります。
JOI day1
ガイダンスとか交流会とかをしていました。
ガイダンス後の記念撮影で用意していた東京タワーのシェリーアクスタを構えたものの、背景をぼかしていたせいでアクスタが消滅していて敗北していました...(愚か)
交流会の伝言作成パートではA2の絵しりとりを任せてそれ以外の問題文を作りました。$\bmod998244853$ を「m998+500」と書いたのは偉いと思います。解答パートではB2とB3を解いていました。B3では自前のBITをバグらせていてごめんなさい…の顔をしていました。この時いみゃーさんと同じチームでした(普段からよくVCで一緒)。万年VCミュート人間がミュートを外して会話していたんですが、声を出すのが億劫すぎて地声より2オクターブくらい下の陰キャ声で会話していました。
JOI day2まで
この当たりから本腰を入れてJOI難易度10も解くようにしました。
風の噂だと「難易度9が解ければ行ける」とか「難易度8が完璧に解ければ行ける」言われてますが難易度10が解けないに越したことはありません。重い問題が普通にたくさんあり、マラソン大会2や感染シミュレーションは丸一日かかりましたが何とかセミファイナルまでに計11問解きました。
また、k6さんのセミファイナル模擬も3セット走っていました。推定ボーダーを超えたのは1セットだけでしたが、どちらも敗因が「貪欲法が苦手過ぎて自明部分点しか取れなかった」だったのでそれさえなければ大丈夫という結論に至りました(推定ボーダーを超えたセットは割とまともに点が取れたのでそういう意味でも安心していました)。
JOI day2競技前
朝早くに家を出て品川のゲーセンに行きました。行こうとしましたが品川にゲーセンがありませんでした。新橋に移動しましたがそっちにもゲーセンが無かったので諦めて集合場所の品川に戻りました。
その後サイゼ組と合流し、どこへ行くのかも知らぬままよくわからないところのサイゼに行きました。当時の写真。ゲン担ぎも兼ねて人生初めて玉ねぎのズッパを食べたんですがう~ん微妙といった感じでした。道中セブンによってまともなグミが無いのを僕が愚痴っていた横であわっしゅ君が龍角散を買っていてなぜかそのとき龍角散ニキと呼ばれていました。
その後12時くらいに会場入りし、パソコンの用意およびグッズの用意(?)をしていました。

k6さんから「はるくがけもフレのグッズいっぱい持ってくるからそこの二大勢力」(意訳)と言われていたのでありったけのグッズを持ってきてその中から飾るとき良さげなものを選んで飾りました。画像に見えるグッズだけでも9520円します。高いですね。周囲に結構中二がいたんですが、色々言われていました。僕はAcaciaの犬です。
のんびりSparebeatをやっていたらガイダンスが始まって泣く泣く中断しました。ポンチョを着てる蜜蜂さんが面白かったです。
会場で配られたキットカットを競技前気分で食べていたら持っていたグミが残り一つなことに気付き、ミニせんべいとグミ1粒で競技をすることになっていました。
競技
始めて紙媒体で問題文が与えられる状況だったのでもたもたしながら問題文を取り出します。
Aを見ます。問題文が読めな過ぎてつらかったですがmultisetを使えばよしなにできます。よしなに書いたらACがもらえました(0:02:46)。JOI本選のAと比べたら簡単な気がしましたがまあJOIGも兼ねてるなら適正帯なのかな~と思っていました。
次にBを見ます。言いたいことは分かりますが何をどう書いたらいいのかわからなくてくねくねします。くねくねした結果余事象を考えてみるとよさそうだと思いました。累積和で解けるのに伝家の宝刀♰BIT♰を用いてACしました(累積和で解けるという脳みそが当時なかった)(0:09:18)。
Cを見ます。セミファイナルになって一問追加されましたがJOIG統合の都合上簡単枠が追加される予想だったので簡単枠だと信じていました。
全然見えません。$A_N\leq 23$ なら確実にYesですが具体的な構築が見えません。とりあえず小課題4までは自明なので小課題5($4\leq A_1$)を考えます。選ぶ服のsumが $23-A_1$ というエスパーをします。すると解の候補が分割数通りしかないので小課題6($-8\leq A_1$)もついでで通りそうだと思いそのコードを書いて投げます。小課題4しか通りません。バグがないかをチェックしましたが見つかりません。諦めて総和を45まで調べるように直すと小課題4,5,6が通ります(0:34:10)。
そのまま満点解法も考えます。半分全列挙っぽく書き直そうとしますが全然遅かったので却下します。考察をすると $23-(-40)=63$ が見えました。そのため服は高々 $6$ つでいいと分かります。そのため総和が $80$ までの分割数で長さが $6$ 以下のもののみを調べるように書き直します。そしたら満点を取れました。(0:46:22)
個人的に結構好きな問題です。$6$ つで達成可能なの僕からしたら非自明で面白かったです。小課題3を見てればもう少し早かっただろうけど、普通に小課題3の解法を間違えていたので反省($N-1$ 通り必要だと思っていました…)。
ちなみに総和が $80$ まで見ればいいは嘘で、総和が $91$ が解になるケースも存在します。ごめんなさい…
ここでFを見ます。どうせFは時間をかけても点が取れないので、自明だけ解いて逃げようという戦略でした。
問題文を見るとある程度可能そうな雰囲気がぱっと見では漂っていました。ただどれぐらい可能なのかは不明なので最後に解こうという方針を取ることにしました。
Dを見ます。よくわかりません。とりあえず頂点 $v$ で終えたいなら $v$ の子で $C_v$ が最小なものを取ればいいので $C_{P_i}\leq C_{i+1}$ となるように $C$ を葉から更新していきます。
嘘と格闘したりしてかなり時間を溶かしましたが、$dp_{u,d,f}=$ 頂点 $u$ に $d$ 回到達していて、頂点 $u$ の子で照らされていないもののうち最も遠い頂点との距離が $f\ ($存在しないなら $f=0)$ のdpが思いつきます。どうせ遷移が線形でできるため小課題2が通るだろうと舐めてコードを書くと、見た目6乗になってしまった上に数字が全然合いません。30分以上の格闘の末なんとか数字を合わせて提出するとなぜか小課題2のACが貰えました(2:10:13)。無限に定数倍高速化をしていたので、最悪計算量になるパスグラフを手元で実行してみたところギリギリ間に合いました。ワンチャンを祈り投げると満点が貰えました(2:12:31)。
正直何がどうなっているのかよくわかりません。どうせ二乗の木dpなんですがどこをどう解析すればいいのかも分かっていないので僕のコードの実際の計算量も理解していないです。ただ定数倍高速化が成功して本当に良かったなと思いました。
正直この段階で勝ちを確信していましたが何が起こるかわからないのがJOIなのでEも解きます。
よくわかりません。小課題1はプリム法やるだけですが小課題2が見えません。
そこでサンプルをこねこねしてみると最小全域木に含まれる辺のみ考慮すればいいことに気づきます(プリム法自体そういうものなのでそりゃそうではある)。なので最小全域木に含まれる辺のみを求め、それらでシミュレーションすれば解けそうです。自分の最小全域木を求める関数が遅すぎてヤバかったですが小課題1,2のACを貰います(2:45:00)。
続いて小課題3を考えます。segtreeの二分探索を使うと解けそうだったのでACLのセグ木を頼り小課題3のACも貰います(3:02:39)。
そのままサンプル2を長時間こねこねしながら小課題4を考えるとstackとモノイドが乗るdsuを使えば解けそうだと思いました。こういう頭が壊れるタイプの問題すごい苦手なんですがすぐにサンプルが合い、小課題4が通ってにこにこします(3:38:39)。
この後Fの小課題1を書きますがカスの実装バグで20分かけても小課題1のACを取れず...結果飛ばして正解でした。
結果100-100-100-100-40-0の440点でした。判明している中で6位でした(あくまでも判明している中で)。Cは嘘を書いていたしDは計算量未証明を通したので普通にカスです。ごめんなさい…
どうやら予想大会で最高点535に全ブッパした結果はるくさんが540点を取っていたおかげで一番当たっていたチームになりました。色々なグッズを景品としてもらいました。最高点534に全ブッパしていたふぁくとさんのチームがいたので凄い耐えをしていました。
また、JOI競技中にまのさば江ノ島コラボのグッズ代行の人が江ノ島のカフェに行っていて、結果が競技中に判明するとのことで2つの不安を抱えながら競技に挑んでました。どうやらそっちも成功していたらしくシェリーナノカのグッズがいっぱい手に入ることになりました。手に入りすぎたらしく全部をもらう予定になった結果追加で3000円の出費になる予定です。助けてください。@パ研合宿運営 2/7にグッズが届くので自己紹介のやつその日くらいまで待ってくれませんか、お願いします。
コンテスト全体の感想
JOIG統合により簡単枠が追加されるのかなと思っていたら全然中堅枠で人の心とかないんか?を言っていました。5-6-8.5-10-?-?がお気持ちなんですが案の定JOIGボーダーが1完+部分点でおお…となっていました。
Dが過程はともあれ結果満点を取れた上にF1以外の取れる小課題は全て取れたと思うので最高のパフォーマンスだったんじゃないかなと思います。
ただ、お気持ちとしてC満点取れないと324点がほぼ無理な上にC満点取れたとしてもDEFの部分点を取らないと爆発しうるセットをミ・テレフェリコの翌年に出していいのか?を思いました。自分はD粘着が成功した方の人なので結果高順位を取れましたが開成筑駒の先輩の皆様がDにボコボコにされている様子をこの目でしかと見届けていたのでかなり運が良かったな、を思っています。
また、オンサイトなのに任意の人に自分から話しかけないカスのムーブをしていました。自分が絡みに行くのが面倒という旨はXでポストしていたんですが、反省してます。ごめんなさい...
ただ、やっぱりオンサイトコンは楽しいので今後もオンサイトはやっていきたいなと思っています(実際UTPCとKeioPCが控えています)。
最後に
次はファイナルです。奇跡が存在すればIOI日本代表になれるかもしれないので頑張りたいです。それとファイナルの参戦記も書こうと思います。
最後までこの記事を読んでくださりありがとうございました。