この度ICPCの国内予選にチームNordseestrasseで参加し、全体17位で(おそらく)通過することができました。 その参加記を書きます。

チームメンバー
Today03 AtCoder青。この記事の著者。実装+典型担当。今年がラストイヤー。
tardigrade AtCoder青。一緒に組むのは3年目。これまでの国内予選をすべて通過している。オールラウンダー。考察、実装両方の手助けをしてもらう。同じくラストイヤー。
参加記:ICPC 2026 国内予選参加記 | akTAR.'s Blog
RWD ICPC初参加。競プロを初めて1年ほどだが成長が凄まじく、参加時点でAtCoder青。キーボード配列や環境の違いもあり今回は考察に注力してもらう。
事前練習
1週間に1~2回チーム練習しました。私とtardigradeくんはこれまでの国内予選の練習を通して過去問をだいぶ解いてしまっていたので、台湾やインド、アメリカの国内予選などで練習しました。
実装はほとんど私がする予定だったので、テスト環境やライブラリなどの整備もしました。 この機会にマクロとテンプレートもかなりガチガチに作りました。1ヶ月ほどですっかり新しい環境にも慣れました。(横浜では結局テンプレ無しでコーディングしなければいけないのですが。。。)
練習途中でありえないバグも発覚し、肝が冷えました。
> 競プロ環境も Today さんが普段使っているものに合わせていたのですが、練習の中でありえないバグが見つかって怖かったです。
— Today (@celestial_dater) 2026年7月5日
これのことです。。。 pic.twitter.com/AkrjL5qYpO
コンテスト
16:30コンテストスタート。
A問題
どう処理するか少し悩んだが、 があるなら場合分け、ないなら
を出力でOK。AC(0:02)。
B問題
左から見ていってできるだけ右においていく貪欲。AC(0:05)。
終わった後考えると区間スケジューリング問題の双対問題になっていた。(参考: https://drken1215.hatenablog.com/entry/2018/07/21/224200 )
C問題
ちょっと迷った。最初は最終的な水たまりの縁となる点に着目して考えていたが色々と場合分けが必要そう。tardigradeくんに、底を固定すると左と右にそれぞれ自分より高い地点があればよいと言われて、たしかにとなる。そのまま実装してAC(0:11)。
D問題
問題文を読んでかなり嫌な気持ちになる。
とりあえず愚直を書いて実験してみると法則がありそう。これをそのまま実装するのもちょっと面倒なのでうまいこと解けないか考えたが、厳しそうなので法則をそのままコードに落とし込む方針でいくことに。とりあえずRWDくんにE,Fに行ってもらってtardigradeくんと詳細を詰める。 か否かと
であるか否かで場合分け、さらにその中でも色々と場合分けが必要で、頭を壊しながら実装。しかし細かいところが違うのかサンプルが合わず。
しばらくしてRWDくんにEの進捗を聞くと解けていそうとのことだったので私はEに行き、残りをtardigradeくんに任せる。Eから戻ってきてtardigradeくんに詰めてもらったとおりに実装する。私の実装と齟齬があったのか一部合わないケースがあったが、ランダムテストとにらめっこしてなんとかAC(1:06)。
苦しかった…
E問題
RWDくんに考察してもらった。
ジェム付きの瓶を一個購入すれば残りのジェムは無料ですべて手に入る。残りのジェムなしの瓶についても考えるが、ジェム付きのよりも安いものは適宜入れ替えて考えれば良い。結局一番安いジェム付きの瓶を買って残ったものは高いものから貪欲にジェムで購入、残りは自前で購入すれば良い。実装は簡単で割とすぐにAC(0:47)。RWDくんにはFに行ってもらい私はDに戻る。
F問題
これも考察の大枠はRWDくんにしてもらった。
が小さいので、長方形の端(+スタート点)になっている座標でグリッドを全部区切ってしまって良い。そうすると
個の長方形になるのでその4隅に代表となる頂点をおいてダイクストラをすれば解ける。
方針は簡単なのだがとにかく実装がヤバそう。手元にグラフライブラリとグリッドを扱うライブラリ(2次元座標↔1次元座標の変換をしてくれたり4近傍を取ってくれたりするライブラリ)があったので総動員して実装する。なぜか処理途中でreturnしてしまっていたりクエリのxy座標を逆にしてしまっていたりと実装ミスはあったが、なんとかサンプルが通ったので投げたら一発でAC(1:58)。これはかなり嬉しかった。
G問題
3人でああでもないこうでもないと言いながら考察。
途中でRWDくんが、初めて衝突する点を固定すると上左か上下か左下の3通りしかなくて、重複もなく数え上げられそうという考察をしてくれる。
かなり正しそうなので私はとりあえず純粋な経路を数え上げるDPパートだけ書き始めて2人に詳細を詰めてもらう。ちょうど書き終わったあたりで詳細まで詰め終わっていそうだったのでそのまま最後まで実装。サンプルを試すと のケースだけ合わない。残り時間も少なかったのでそれだけ場合分けしてお祈りしながら提出してみるとAC(2:43)。
がサンプルにおかれていたことに感謝。
H問題
Gと並行しながら考察していた。とりあえず最終形と作る順番をそれぞれ順列全探索したい。なんとなくそれぞれのパートを順列全探索からbit DPに改善するんだろうな〜と思っていたが詳細までは詰めきれずに終了。
感想
ここ最近、個人的に競プロの調子が悪く、AtCoderのレーティングもモチベーションも下がり調子だったので、予選突破できるかかなり不安でしたが、蓋を開けてみれば好成績で通過できてかなり嬉しいです。しっかり役割分担ができ、それぞれの得意領域がうまく噛み合った結果だと思っています。
横浜大会までにチームだけでなく個人の地力も高めて、今度は悔いなく自信を持って臨めればいいなと思います。
余談:Playoffについて
本題とはそれてしまうのですが、この機会に供養しておきます。
去年組んだチームAkai_Koibitoで、Taichung RegionalからPlayoffに進出できたのですが、私は参加できずに終わってしまっていました。
ICPC Playoffに、参加できませんでした。。。
— Today (@celestial_dater) 2026年3月8日
Akai_Koibitoの他メンバーには、2人チームという厳しい状況で健闘していただいたことに感謝します。
私は飛行機のアクシデントで本日18:00に会場についたので、夕食会とExcursionだけ参加する謎の人になります pic.twitter.com/JGNwkzMFgY
これはPlayoffの日程と国際学会の予定が被ってしまった結果、かなり無理なスケジュールになってしったことが原因です。
Playoffは場所が台湾、日程が03/06~03/09(08日競技)だったのに対し、学会の日程が03/04〜06、場所がなんとイタリアで、両方に参加するためには以下の条件をクリアすることが必要でした。
- 私の発表日程を事前発表されていたプログラムの03/06から03/05以前にずらしてもらう
- (時差も含めて)03/06〜07中にイタリア→台湾に渡航する
運営の方の取り計らいもあり、1つ目の条件はクリアできたのですが、2つ目が満たせませんでした。。。
もともとのスケジュールに無理があったのもあり、途中オランダのアムステルダムで50分で乗り換えるルートしかありませんでした。
それだけでも相当やばいのですが、なんと1便目のイタリア→オランダ便が遅延し、オランダについた時点で残り20分くらいしか残りませんでした。しかもEU圏内から出る都合上、一旦ここで出国審査を挟む必要があります。
係の人に協力してもらったりして爆速で出国審査を通過して全速力で出発ゲートに走ったのですが、あと一歩で飛行機出発に間に合いませんでした。無念。。。一応翌朝出発して競技当日の朝に台湾に到着する便も残されていたので、カウンターで掛け合ってみたのですが、無理とのこと。ここで参加が不可能なことが確定。
結局翌日の昼に出発して競技当日の夕方に到着する便に振り返られました。合わせて取ってもらったホテルは清潔かつ広々としていてとても良かったです。
この振替便が上海での乗り換えが必要な便だったのですが、なぜか上海で一旦入国・出国審査させられ今度もまた乗り換えがぎりぎりになったのと、ここでバゲージロストが発生して、泣きっ面に蜂といった様相で台湾に到着し、チームメンバーと合流することに。バゲージロストに関しては台湾の空港の方がかなり親身に対応してくれて、台湾出発までに再会できました。感謝。
チームメンバーだったtardigradeくんとtitanくんには、2人で戦ってくれたことへの感謝と申し訳なさに堪えません。
今年こそはこの回のリベンジが果たせたら嬉しいです。



































