ICPC 2026 国内予選 参加記 (jiTUSryokushugi - Yuulis視点)

2026/7/3に開催された ICPC 2026 国内予選 にて、チーム jiTUSryokushugi として参加し、6完・全体33位(学内1位)という成績で予選通過することができた。

この記事では、チーム結成から模擬国内を経て本番の国内予選までの流れを、私の視点で振り返っていく。

チーム結成まで

私は普段、葛飾キャンパスの「情報技術クラブ(ITC)」のPROG部競プロ班のメンバーとして活動しているのだが、ICPC参加にあたって、神楽坂キャンパスの「応用数学研究部(OSK)」の競プロ班長 Nattyu さんから声をかけていただき、理科大のAチームとして参加することになった。

そういうわけで、今回は OSK と ITC の合同チームが計6チーム結成されることになった(野田キャンパスからもう1チーム出ているらしい)。

チームについて

以降敬称略。

  • lexi38623: 自分と同学科で一つ下の後輩。ITC所属。AtCoderは青色で、レーティングのグラフがほぼ単調増加しており、入黄も視野に入ってそう。チーム内で実装力に一番の信頼がおける。末尾の5桁は乱数で適当に決めたらしい。
  • Tehom: 数学科3年でOSK所属。AtCoderは青色で、OMCも結構やってるらしい。数学科らしく解法の正当性をしっかり詰めてくれる。数え上げや組合せの分野が得意。
  • Yuulis: 情報工学科3年でITC所属。AtCoderは水色だが、5年半も続けているくせに上の2人に完全に実力を抜かれている。2人のパフォーマンスを最大化するための雑用係。

チーム名は、弊学の教育目標である「実力主義」から。

チーム結成を行った6月初旬は、台風接近時の弊学の対応で例の新聞広告の文句が再び話題になっていた。 これを受けて、自分が「ネタに振るなら『実力主義』の意味合いとか入れたいっすね」とか言ったら、本当にチーム名が「jiTUSryokushugi」になった。なにこれ。悪ノリで「Science Tokyo」をもじる案もあったのはナイショ。

模擬国内 (6/21)

2人と顔合わせしたのはこの日が初めて。

11時過ぎに神楽坂キャンパスに集合し、2人 + Nattyu さんら他数名と近くの富士そばで自己紹介がてら昼食を取った。

13時ごろに会場の教室に戻り、使用するPCのセットアップや、ライブラリ・戦術の確認を行う。


競技に使うのは、実装力が一番ありそうな lexi38623 のPCとし、そこに2人のライブラリを集約した。 また、コンパイル時のエイリアス設定等も行った。


チームの戦術としては、ICPCの順位計算の都合上、序盤の速解きが重要になると思ったので、A・B問題は主に lexi38623 が担当し(場合によっては Tehom が横でチェック)、その間に自分がCやD問題の概要を把握し、考察を行っていくという形で進めることにした。

モニター画面は、左半分を問題に、右半分をVSCodeとして、「右でAの実装をしている間にもう一人が左でBを読む」といったことができるようにした。


環境整備でバタバタしてしまい、あっという間に14時が近づいてきた。 緊張する間もなく、ぬるっと競技開始。

A問題

他の5チームも同部屋で同じ1つの印刷機を使うことになっていたので、まずは lexi38623 がA・B問題を6部ずつ印刷するクエリを投げる。


私が印刷結果を他チームに配りにいっている間に、 lexi38623 がA問題を通す(3分)。

B問題

Tehom がその間にB問題を読んでおり、Aを解いた lexi38623 に実装方針を伝える。そのまま実装し、通す(5分)。

C問題

2人がそれぞれの対応をしている間に私はC問題を読む。

ぱっと見、考えるべき連続区間はxで分断されるっぽい。尺取り法か二分探索か?

Bの考察を終えた Tehom がやってきたので概要を伝えると、答えの二分探索で行けそうとのこと。判定問題もそこまで難しくなさそうなので、方針を lexi38623 に伝えて実装してもらう。 特に沼ることもなく通ったみたい(20分)。

D問題

lexi38623 のCの実装中に事前に印刷しておいたD問題を Tehom と読む。

ヤバそう。

制約はそこまで大きくないものの、サイコロの回転状態と色番号の管理の仕方がうまく思いつかない。

10分程度考えたところで、一旦飛ばすことに。

E問題

Cの実装を終えた lexi38623 と3人でE問題を読む。

インタラクティブ形式なのでぎょっとするが、数学系なのでDよりは手が付けられそう。

とりあえず? 0 0を投げたら gcd(a,b)\gcd(a, b) が返ってきてちょっと嬉しいよね、という話をしつつあれこれ考えていると、 Tehom が 2n2^n の倍数について注目すれば見通しが良さそうだと主張。

さらに lexi38623 が、 nn11 進めるごとに 33 回の質問を繰り返すことを 3232 回繰り返せば a,ba, b を復元できそうだよね、という考察を生やす。

最初の 11 回は 44 回の質問を行うことで、質問回数上限の 100100 回にちょうど収まることになり、この方針で良さそうだと納得。

自分が手元でいくつかのパターンを生成し、自前のサンプルを作成している間に Tehom → lexi38623 の順で実装を進めていくと、サンプルが合ったので提出。 ... しかし、WAが返ってくる。3人であれこれ指摘し合いながらデバッグを行い、2ペナを出しながらなんとかAC(90分 + 20 x 2)。


このタイミングで順位表を確認すると、D問題が思ったより通されていることに驚愕。 しかし、直前の考察で有用な考察が生やせていない状況だったので、この時点でACがいくつか出ていたF・G問題を lexi38623 や Tehom がバラバラと見ていく。

自分は引き続きDに食らいついてみたが、これといった進捗は出せず。

その後はDを再び考えていた Tehom が O(24N)O(24^N) から枝刈りしつつ全探索ができそうだよなといったことを考えるも、実装が重すぎる上に計算量も怪しいので、残り1時間半は椅子を温める結果となってしまった。


終わってみればABCEの4完・全体63位という結果で、選抜ルール準拠なら一応予選突破ライン以上の成績だった。

しかし、EのAC以降の立ち回りには反省点が多く、理科大BチームのS.F.KがDを通していたこともあって、全く油断できない状況。


終了後はDiscordで反省会を行い、中盤以降の戦略については再度検討することになった。

学内バチャ (6/28)

模擬国内の翌週は、再度神楽坂キャンパスに6チームが集まり、合同で「JAG 2022 模擬国内 A問題 + ICPC 2022 国内予選」をセットにしたバチャを行った。

この時のセットは体感的に先週の模擬国内よりも難易度が高く、かなり苦戦した。

一応、私が4問目のメイン考察と実装を担当してACし、チームに貢献することはできたが、5問目では配列外参照に気づかず4ペナを出してそのまま終了という悔しい結果になった。


この結果を受け、チーム内で実装時や提出前の注意ポイントを整理することになった。

また、ac-library を実装コード内に展開できるように expand.py を lexi38623 のPCに設定したり、(本番では使いたくないが)F5デバッグを使えるようにしたり、バグ取り時のコード印刷のためにVSCodeの「Print」拡張機能を入れたりするなど、環境面の整備も行った。

今思うとこの時の失敗経験が国内予選で上手いこと生きたのかもしれない。

国内予選本番

りあんさんが毎年メンテしてくださっている ICPC Standing Colorizer により、国内予選の順位表にAtCoderのユーザーネームと色が表示されるはずなのだが、前日になってもこのチームの3人は表示されていない。

原因を探ると、なんとOB/OGの会のページのチーム一覧に登録したチーム名のshusyuになっていたことが判明(1ペナ)。 修正して再度登録してもらい、解決した。


当日、私は2限まで授業があったので、葛飾キャンパスで昼食を済ませてから神楽坂キャンパスに向かった。 会場は1号館の図書館の多目的室を使わせてもらえることになっていたが、そこは16時からの予約だったため、14時ごろに到着した私は2時間ほど図書館で待機することに。

神楽坂の図書館は初めて入ったのだが、蟻本の第2版が蔵書として置かれていてびっくり。


16時になり、会場に入室。 適当に設営を行い、使用するPCとプリンターの接続、実行環境の確認等を行っていると、すぐに競技開始の時間になった。

模擬国内のときとは違ってさすがに緊張感はあったが、序盤はとにかく安定重視で、落ち着いていつも通りやっていこうと2人に伝えた。

そんなこんなで、16時半、競技開始。

A問題

模擬国内と同じく、まずは他チームを含めた6チーム分のA・B問題の印刷クエリを lexi38623 が投げる。

例によって私が印刷物を取りに行ったのだが、模擬国内のときと違って英語の問題文もセットで出てくるので少し戸惑う。


印刷物を取りに行っている間に、 lexi38623 が通す(2分)。

なんか1問目から設定がモリモリだったようで、少し戸惑っていた様子だったが、愚直に実装してお祈りしたらAC。

B問題

lexi38623 のAの実装中に Tehom が問題を読む。

こちらもそこまで難しくなく、左から貪欲的に処理できるみたい。 そのまま Tehom が実装し、お祈りしたらAC(7分)。

C問題

2人の作業中に私が問題を見る。

底がでこぼこした水槽に水を入れ、左右の板を取っ払い、水があふれ出た後の残りの水量を求める問題。 ぱっと見、私が個人的に解いたICPC 2004 国内予選 「Water Tank」を思い出す。

あれは大変な重実装だったのでやりたくないなぁと思いつつ、サンプルケース2を図示してみる。 実装を終えた2人に概要を図示したサンプルと共に伝えると、「よく分からんけど、とりあえず左右の底の高さの min\minmax\max がその間の列に残った水量になるよね」ということに。

3問目にしては NN の制約が小さく見慣れない条件になったので、不安に思いつつ lexi38623 が O(N2)O(N^2) の愚直解を実装。 サンプルもあったのでSubmitを押してお祈りしたら通った(14分)。

D問題

lexi38623 のCの実装中に問題を Tehom と見る。

aia_i の定義がちょっと変わっているが、 ii を進めてもそこまで大きな値にはならなそうというのが第一印象。

Cの実装を終えた lexi38623 と共に5分程度考えていたが、どうにも見通しが立たないので、 Tehom が実験コードを書くことに。 その間に私は一足早くE問題に移った。

実験コードを回してみると、きれいな法則性が見つかったらしい。 k>s2+1k > s^2 + 1 の場合を Tehom が実装し、 k<s2+1k < s^2 + 1 の場合を lexi38623 が整理して実装してもらうと、サンプルも通り、Submitを押してお祈りしたらAC(57分)。

E問題

コインとジェムでお酒を買い、そのときに必要なコインの枚数を最小化する問題。

単純な貪欲法ではなさそうだし、愚直なDPをやろうにも O(n3)O(n^3) となって絶望なので、別のアプローチをDの方針が見えて移動してきた Tehom と考える。

とりあえず、ジェムの総和 ibi\sum_i b_in1n-1 以上ならば、最初に「bi>0b_i > 0aia_i が最小のお酒」のみコイン aia_i 枚を支払って買うことで、あとは購入して得られたジェムを交換しながら全てのお酒を買うことができる。

問題はそうでないときだが、この場合もまずは「bi>0b_i > 0aia_i が最小のお酒」をコインで買い、bi>0b_i > 0 のお酒を全てジェムと交換する。その後、余ったジェムで「bi=0b_i = 0aia_i が大きいお酒」から順に交換し、残りのお酒をコインで購入する。 ...といった方針でDのAC後に Tehom が実装を進めるも、サンプル3が合わない。

よく考えると、「bi>0b_i > 0aia_i が小さいものを敢えてコインで買い、余ったジェムでより多くの bi=0b_i = 0 となるお酒を交換」した方が良い場合があることに気づく。

これは、最初にコインで買うお酒を xx 個とし、これを全探索すれば良さそう。 正当性を考えると、入スhできるジェムの総和が変わらないので、小さい方から順番にコインで購入することが最適であると Tehom が気づき、実装を lexi38623 が進める。 これによりサンプル3も正答し、Submitを押してお祈りしたらAC(110分)。


この時点で全体38位と、予選通過にはやや余裕がありそうだった。

続いてF・G問題の印刷を行い、私は既に lexi38623 が考察を進めていたFへ行く。

G問題

Gは Tehom が単独で考察を進める。

少しすると、「解けたかも」と言い出し、解法を聞く。 組合せっぽいのは問題をちらっと見た時点で思ったのだが、「2つの駒が重なる経路を余事象として考える」や「経路の重なり方を重複なく場合分けする」といった数え上げの基本を駆使した上で、DPにより O(nm)O(nm) で解けるとのこと。

問題の第一印象に反してかなり綺麗に解けそうで、Tehom の実装を2人で見つつ、大きなバグを出すこともなく、そのままAC(153分)。

これがこの日一番のファインプレーとなった。OMCでも数え上げ問題が頻出するようで、さすがOMC勢といったところ。

F問題

Eで Tehom が嘘解法の実装を進めている間に、Dを実装し終わった lexi38623 が問題を読む。

グラフを構築してDijkstra法を行えば O(QM2logM)O(QM^2 \log M) の計算量で解け、グラフの辺数を減らせば MM の次元を1つ落とせそうということは思いついていたようだが、実装方針が定まっていない様子。

GのAC後に lexi38623 が実装が実装を急ぎ、残り10分時点で大枠が完成するも、グラフの辺数を節約するところに関わる部分問題が解けていなかったことが判明し、残り時間で実装しきるのは困難だと判断。

H問題

Gの実装を終えた Tehom と共に、ラスト20分ぐらいから軽く問題を読む。

よく見る広告ゲーのやつか? ハノイの塔に似てるなぁと思いつつ、さすがに残り時間でいい考察が生えるわけもなく終了。

結果

競技終了後、順位表を確認するとなんと全体33位。学内1位で予選通過することができた。

最終順位結果
最終順位結果

あの bogosort と同じ正解数に並んでいることにも驚きつつ、予想もしていなかった高順位を取ることができ、3人とガッツポーズ。

練習ではあまり良い結果を出せていなかった分、本番ではチーム全体としてかなりいい立ち回りができたのではないかと思う。 何気に一回もペナを発生させていないし。

学内2位だった S.F.K は、最終的に約20分差でEを通して5完していたので、Gが通っていなかったらちょっと危なかった。


そういえば33位は株式会社RKKCSさんの企業賞に該当するみたい。特に狙っていたわけではないので、これも嬉しい。

終了後

会場の原状復帰を行った後は、3号館の一室で他チームの方と一緒に打ち上げを行った。

先輩方がピザやら何やらを用意してくださっていた。ありがとうございます。

打ち上げの様子
打ち上げの様子

ITCから他チームで出場していた KKKKKIIIII くんや yellowred くんもICPC初出場だったので、2人も感想を聞くなどした。 普段のAtCoderとは違い、一人で考察が行き詰っても他のチームメイトが助けてくれたおかげでACできたという、個人戦では味わえない楽しさがあったとのこと。

また、OSKのOBである pres1dent さんや m1ffyz さんともお話しすることができ、予選突破を祝っていただいたり、Yokohama RigionalやJAG夏合宿の情報も共有してもらったりした。

さらに、 Nattyu さんから OSK の運営周りの話も共有してもらった。 去年は私がPROG部全体の部長を務め、今年は競プロ班の班長を KKKKKIIIII くんが務めているのだが、慢性的に競プロ班の人員が少ないという問題を抱えている。 今回も単独ではICPC出場が見込めない状況だったので、新歓での人員取り込みや、OSKを含めた他キャンパスのサークルとの合同活動など、今後の協力体制についても少し話し合うことができたのは良かった。

おわりに

初のICPC参加で国内予選通過という結果に恵まれたのは、やはり lexi38623 と Tehom の実装力・考察力の高さに尽きると思う。 まずは2人に感謝したい。本当にありがとう。

私は完全にキャリーされる立場になってしまったことが個人的に悔しい。

どれか1問でも自分がメイン考察・実装を担当できていれば、2人に後半の問題を考察する時間をより多く与えられたのではないか(ワンチャンFも通せたかも?)と思いつつ、序盤勝負のICPC国内予選において、万が一沼ったり余計なペナを出してしまったりしたときの方が怖いので、結局今回のような立ち回りが最適解だったのかもしれない。

一色の差の大きさも感じると同時に自分の実力不足を痛感したので、12月のYokohamaまでに少しでも2人に追いつけるように精進していきたい。

とりあえず今後はARCにも積極的に参加して考察力を伸ばさないとなぁと思った。


また、ITCに合同チーム結成を呼びかけてくださったり、裏の事務作業を進めてくださったりした Nattyu さんにも改めて感謝したい。ありがとうございました!

おまけ

チームの2人の視点からの参加記もあるので読んでね。

  • Tehom 視点:
ICPC 2026 国内予選参加記 - Tehom_math’s diarytehom.hatenablog.com favicon
  • lexi38623 視点:
ICPC 2026 国内予選 参加記 - lexi38623の日記lexi38623.hatenablog.com favicon

Nattyuさん視点もあるよ。

ICPC2026 国内予選参加記 【チームFastIO_SlowBrain: Nattyu3視点】|nattyuさんnote.com favicon