ICPC2026 国内予選参加記

はじめに

私です。

7月3日に開催されたICPC国内予選に、チーム WaSanBon (Twil3akineCaffeineholicAkagi_Shrine) で参加しました。

関連リンク

  • 順位表
LiveSite
LiveSite
  • 問題一覧
https://storage.googleapis.com/files.icpc.jp/domestic2026/problems_ja.pdf

結論から言うと、A、Bの2完でした。チームメイトを侮辱する気は一切ありません(むしろ感謝で胸いっぱいです)が、個人的には本当に恥です。

情けなくて、開いた口がどこにも行きません。「あのとき、こうしておけば」というタラレバ話を1日中できると思います。

ICPC 2026 国内予選のチーム WaSanBon の結果
ICPC 2026 国内予選のチーム WaSanBon の結果

私は全体の相談役と、C、Eの考察を担当しました。

実装が得意なら自分が全部実装したかったんですけどね…本当に悔しいです。


A問題「最強のカードを見つけろ」

配られたカードのうち、大富豪で一番強いカードを出力する問題です。

カードの数字を xx として、強さの比較に使う値 f(x)f(x) を次のように定めました。

f(x)={x+13(x{1,2})x(3x13)f(x) = \begin{cases} x + 13 & (x \in \{1, 2\}) \\ x & (3 \le x \le 13) \end{cases}

f(x)f(x) が最大になるカードを選び、元の数字に戻して出力します。実装では、最大値が 1414 以上なら 1313 を引き、そうでなければそのまま出力しました。

コンテスト後に「11 または 22 が含まれていれば強いほうを出し、どちらもなければ最大値を出す」という解法を聞いて、賢いなぁ…と感じました。


B問題「自動販売機」

自動販売機を置くと、設置位置から距離 dd 以内にある扉をカバーできます。すべての扉をカバーするために必要な自動販売機の最小台数を求める問題です。

最初は「必ず各扉の間に自動販売機がなければならない」と誤読しており、若干のタイムロスをしてしまいました。

扉の位置を昇順に x0,x1,,xn1x_0, x_1, \ldots, x_{n-1} とします。まだカバーされていない最も左の扉を xix_i とすると、自動販売機を xi+dx_i+d に置くことで、右端 xi+2dx_i+2d までカバーできます。

したがって、次の貪欲法で求められます。

  1. i=0i=0、答えを 00 とする。
  2. xix_i を左端として、自動販売機を xi+dx_i+d に置く。
  3. xjxi+2dx_j \le x_i+2d を満たす扉をすべて飛ばす。
  4. 答えに 11 を加え、未処理の扉があれば手順2に戻る。

誤読に気付いたあとは、すぐに正しい方針へ進めたのでよかったです。


C問題「残った水」

持ち前の語弱をここで遺憾なく発揮してしまい、問題文を読んでも全然分かりませんでした。頭をひねって考えた結果、「何か凸性が関係ありそうだなぁ」というところで思考をロックしてしまいました。

終了後にほかのチームの子から話を聞くと、「上から見て、壁にぶつかるまで各マスの水をなくす」という処理を左右から1回ずつ行うだけでよかったらしく、本当に悲しくなりました。

これは完全に私の考察ミスです。チームのみんなに申し訳ないです。

難しすぎて、今年の重実装枠はCに来たのかと思いました。実態は私の考察ミスです。


D問題「回数数列」

私はこの問題にほとんど関与していませんが、考察はほぼ合っていたようです。C問題の考察をスムーズに終えられていたら、これも解けていたのではないかと思います…。

内容に触れると、群数列のような構造になっていて、s2s^2kk の大小関係によって場合分けが生じるようです。


E問題「買い物上手」

考えていると、どうしても貪欲法でよいように思えてきます。

瓶全体の集合を UU、ジェム付きの瓶の集合を GG とします。ジェムが付いていない瓶の集合は、補集合 UGU \setminus G です。また、ジェム付きの瓶の最小コストを cminc_{\min} とします。

コンテスト中は、次のように場合分けして考えました。

  • UG|U| \le |G| の場合:ジェム付きの瓶を1本買えば、すべての瓶を買えるため、コストは cminc_{\min}
  • G=0|G| = 0 の場合:ジェムを利用できないため、すべての瓶のコストの総和。
  • それ以外の場合:ジェムで買える本数を確保するための cminc_{\min} と、コインで買う瓶のコストの総和。

「それ以外」のケースをもう少し詰めていれば正解できたそうで、ここに時間を割けなかったことが本当に悔いになっています。


F問題「地図アプリの高速化」

BFSをすればよいのでは、と思ったのですが、n109n \le 10^9 の正方形グリッドなので撤退しました。

何か絶対に賢い方法があるんだろうなぁ、と思うんですけどね…。


さいごに

G問題以降は、問題を見ることすらできていません。

いつの間にか、次はICPCに参加できる最後の年になってしまいました。

来年はもうM1です。来年は横浜に行きたいです。この1年は真面目に頑張ろうと思います。

ちゃんとチーム練習とかね…。

というか、ICPCはいつRustを使えるようにしてくれるんですかね…。