ICPC 2026 国内予選に参加しました。
大学1年生のときから参加していた ICPC ですが、とうとう今年がラストイヤーです。
文章の体裁はあまり気にしていません。
問題の内容に触れるので、ネタバレ注意です(念の為)。
チーム紹介
チーム名は Nordseestrasse です。
nord + see + strasse と思ってグッと睨むと意味がわかるかもしれません。ノリで決まりました。
メンバーは以下の通り。
Today03: M2。青。典型と実装がめちゃめちゃ強いという印象で、今回もすべての問題の実装をしていただきましたRWD: B4。青。競プロ歴は一年ほどですが、現在急成長中で考察面でとても頼りになりますtardigrade: M1。青。この記事を書いています。実装と考察の応援()を担当しました
Today さんとチームを組むのは3年連続3回目で、環境・コーディングスタイル・得意/不得意などはお互いよく把握していたと思います。
一方で RWD くんはチーム戦がそもそも初めてだったということもあり、チームを組んだ時点では「強みを発揮できる立ち回りができるかが鍵だな〜」と勝手に考えていたりしました。
練習
最低でも週 1 で集まって練習していました。
基本的には Today さんに実装を任せる方針だったので、競プロ環境も Today さんが普段使っているものに合わせていたのですが、練習の中でありえないバグが見つかって怖かったです。
最初心配していた立ち回りに関しては、練習中大きな事故はなかった気がしていて、当日もかなり自信を持って望めました。
個人的な話でいうと、構文解析の復習をしました。
自分が初めて参加した頃は、「ICPC といえば構文解析」というイメージでしたが近年はあまり出ませんね。
「もし出題されたら自分か Today さんが解く(ので RWD くんは勉強しなくていい)」と宣言していたので、『木変形パズル』やテンプレートの使い方を詰め込み直しました。
模擬国内
3 人で集まって参加しました。
記憶違いがあるかもしれませんが、覚えている範囲で当日の動きを書きます。
C 問題までは順調で、 D 問題で少し嫌な気持ちに。
とはいえやるだけなので、 RWD くんを先に行かせて Today さんが実装、自分が監視をする。
サンプルが通ったので投げるも WA。自分と Today さんが交互に PC を専有してデバッグし、その間に E 問題の考察も進める。
しばらくして、逆順 rep マクロの使い方を間違えていることに Today さんが気づいて AC。
E 問題が解けずに困っていたが、先の問題を見ていた RWD くんが「F が解けた」と主張しはじめる。考察を聞くと確かに良さそうでにっこり。
二人に実装を任せて自分は E 問題を引き続き考える。解けない。
F を通した二人が戻ってきたのでみんなで E を考える流れに。 実は D で沼っている間に RWD くんが G の考察も進めてくれていて、大筋は良さそうだったが細かい部分がだるそうなのと、流石に AC 数に差がありすぎるのでそちらは諦めた。
自分は何もわからなかったが、二人が考察を少し進めてくれたので、それを式に落として Today さんにパスする。
手元でのチェックでは問題はなさそうだが、WAWAWAWAWAWA…
終了間際に気づいたことだが、出力が 10^18 を超えてしまってダメそうだった。
5完46位で終了。
同校制限で抜けていそうな位置ですが、 E は解かなければいけない問題だったと思うので、悔しさが強かったです。
当日
2 限の講義にでて、お昼ご飯を食べてから会場へ向かいました。
リハーサルに参加したり、プリンターのチェックをしたり、おやつを食べたりしていたらあっという間にコンテスト時間に。
10分前くらいまでジオゲをやっている勢力がいて、心臓つえ〜と感心するなどしました。
コンテストが始まって Today さんと二人で A を読む。
2 があれば 2、1 があれば 1、それ以外ならmax。することがないので一応実装を監視。AC(0:02)。
RWD くんが B は貪欲と言っていて、確かに良さそう。実装を監視。AC(0:05)。
C の図を見てちょっと嫌な気持ちになる。まぁ左右で前計算すればいいかと思ったところで制約を確認すると が通るらしい。
わかりやすく毎回ループ回して max の min を取ることにする。実装を監視。
提出直前で古いファイルを出そうとしていることに Today さんが気づく。
本当はこういうのは自分が気づくべきなのに、スルーしてしまってごめんなさい…。AC(0:11)。
D の内容を把握。何もわからない。まぁ周期性がなきゃ解けないだろうと思って実験。 だけ場合分けして、あとは最初の 項とそれ以降で分ければ良い。
RWD くんが E に向かって、自分は実装を監視。全然合わない。やばい。僕も、多分 Today さんも、このとき少し焦っていて良くない空気だったと思う。
Today さんとの会話が若干噛み合わず、途中で自分と区切っている位置がズレていることに気づく。それを指摘するか、Today さんのやり方で突っ走ってもらうか少し悩む。
ちょうどそれくらいのタイミングで、Today さんが E の進捗を聞くと、「多分解けていてそれが正当なら実装も簡単そう」という報告が上がってくる。
神すぎ。これで冷静になれた。
Today さんが RWD くんと合流して E の考察・実装をする流れになり、自分はその間に前半の項の場合分けと実装を詰める。
どうやら考察は正しかったらしく、しばらくして E 問題を AC(0:47)。
Today さんが D に戻ってきて RWD くんは F へ。
ちょうど前半パートを詰め終わったので、一言一句そのとおりに実装をしてもらう。
ランテスが爆速で書ける環境&問題設定だったので、書いてテストをしてもらうと、どうやら後半パートが合っていないっぽい。
そちらは Today さんがよしなに修正してくれて、ランテスも通ったので自信を持って提出。AC(1:06)。
ここで初めて順位表を見る。確か 16 位で、めちゃめちゃびっくりする。
体感 40 ~ 50 位くらいだと思っていたが、実際はここで終わっても通過できるくらいには速かったらしい。
北大最強チーム winter_HPK がすでに F を通していて、さすが。
F の考察も RWD くんがすでに終えていて、聞くとかなり良さそう。良さそうだけど実装がやばい。なんで winter_HPK はもうこれ通してるんだ???の気持ち。
やばい実装を二人に任せて自分は G を考察。
こういうのは経路の交点を見ればいいんですよね〜と言いながら考えるが解けない。解けないなぁと思っているとデバッグ要員として招集がかかったので F に戻る。
結局、自分は印刷されたコードを読んでいただけで大したことはしていないが、Today さんがすべてを解決してくれて AC(1:58)。
この時点でも 16,7 位で、安心感が出てくる。もう一問解くぞと意気込んで再び G へ。
G の考察を二人に話すと包除と言われる。考察を聞きながら「私は包除がわかりません」の気持ちに。
winter_HPK が H を通していたので一旦 H も読んで見る。
「置き場を経由しない浮輪の最大化」「初期位置から動かさない浮輪がある棒を全探索」はぱっと出てきて、その後 で順番全探索したい〜などと Today さんと話していると、RWD くんが「 G が解けた」と主張し始める。
方針だけざっくり聞いた感じは悪くなさそうで、 Today さんが前計算のコードを書き始め、自分と RWD くんが細かい部分の考察を詰める。
と言っても元の考察がほぼ正解みたいなものだったので、自分は RWD くんの背中を押すことしかしていない。
Today さんに考察を話して本計算の実装をしてもらうと、 のケースだけよくなさそうということがわかる。
適当にカチャカチャすると値が合うので、時間も少ないしえいやで投げるとAC(2:43)。RWD くん最強!
H は、最後の最後で「適切に前計算をしておけば bitDP ができて くらいになるのでは」と Today さんが気づいて実装を始めるが、タイムアップ…。
振り返り
全体 17 位で、予選通過だと思います。
5 年連続の横浜になりそう。
正直この順位で抜けれるとは思っていなかったので、とても嬉しいです。
ラストイヤー、悔いのないように精進します。