5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ICPC2025 Yokohama Regional 参加記

Last updated at Posted at 2025-12-10

はじめに

はじめましてキクタンと申します。
ICPC2025 Asia Yokohama Regional Contestに早稲田大学からチームK1NTOKIで出場し、5完23位という結果でした。

image.png

またこの記事はWathematica裏企画アドカレ2025に寄稿しました。
興味があれば表企画であるWathematica Advent Calendar 2025と一緒に見てみてください。数学や物理や趣味の話が多くて面白いです。

チーム紹介

メンバー紹介

  • k1suxu(B3)
    • チームのエース。これで「キッシュ」と読む(おしゃれ)。DPや場合分けがうまくアイデアを実装の形まで持っていくのが早い。「この問題はもう大丈夫です」という言葉の安心感がある。典型力が高い。
  • toku4388(B2)
    • チームのエース2。実装力・デバッグ力が高く、重実装や幾何を「これ僕がやるんですか?」と嫌々担当してACしてくれる。数学力もあり、幾何・整数・パズルが強い。
  • 自分(キクタン、kyomikyomi)(M1)
    • サポート・変なことを言う担当。10回に1回くらい神がかったひらめきを見せ、「それは天才ですね...」とチームメイトが詳細を詰めてくれる。天啓力が高い。 
  • chimaki821(コーチ、M2)
    • コロナで下火になった早稲田の競プロ界隈を再度立て直した中心人物の一人。去年はtoku・chimaki・kyomikyomi(自分)でtcknyoというチームでICPCに参加していた。この人を中心に今の出会いがある。

チームに対する自分の戦略

(チームとしての戦略は別の人が書いてくれることを祈ります)

k1suxu君・toku君がどちらもレート黄色・highest黄色と実力が高い一方で、自分は水色、実装・タイピング速度も遅く実力に差がある状況でした。

さらに二人は得意枠がほぼ被っておらず、ほぼ全ての問題をどちらかが担当できる状況だったので、基本的に自分の役割は

  • 二人が思いついた解法を聞いて正当性を確かめる
  • ライブラリなどのプリントデバッグ
  • 誰も読めていない問題を読み、共有できるようにしておく

など、サポートを最優先していました。自明すぎる問題は自分で実装まで担当することもありましたが、結論今回のコンテスト本番では1問も実装しませんでした。

また実装キューが溜まっている時や解ける問題がないときは考察に周り、チームメイトが考えていないようなアドホック解法を試したり、愚直な実験を紙に書き出したりしていました。
「こんなん思いついたけどどう?」と嘘を連発したり、たまにいい感じのアイデアを二人に提供したりしていました。

事前練習

チーム練習はJAG夏合宿に参加したのと、10月からyokohamaやseoulの過去問を中心に6回ほど行いました。

k1suxu君とtoku君は今年初めてチームを組んだので、練習回数を重ねることでお互いの得意・苦手を理解したり実装の交代タイミングを掴んだりできていたと思います。

また練習初期、自分はチームメイトと実力差があるため、「同じ問題を考えても戦力にならないのでは」と二人が考えている問題とは別の問題に手をつけがちでした。しかし実際には、二人が解けそうな問題こそ一緒に考え、解法の詳細や実装方針を共有して議論することで、二人の解像度が上がり、結果的にACまでの速度を高められる場面が多くあると気づきました。

他にも初動に関して、ABCDは自分、EFGHはtoku君、IJKLはk1suxu君が読むことは決まっていましたが、その4問を前から読み進めるより、「最初に担当4問をザッと眺めて簡単そうな問題から読む」ことを考えました。本番は緊張で普段より英語が読めないはずで、その状況で一番難しい問題が先頭にあると焦りと読めないのループに陥る可能性もあるので、普段通りのパフォーマンス(英語力・競プロ力)とメンタルを保つために、細かいルーティンを作っておくのがいいと思いました。

対面での5h練習を重ねることで、感覚レベルでチームの立ち回りを最適化できていったと思います。

前日まで

自分が本番3週間ほど前にインフルにかかり、かなり体調面を気を付けるようになりました。具体的には1週間前からR-1ヨーグルトを毎日飲むようにし、研究室など人が多いシーンではマスクをつける、手洗いや消毒をするなどしました。

image.png
↑最強

また2日目の朝は6時起きとかなり早いので、遅くとも1時には寝て、9時前くらいに起きる生活リズムを続けていました。前々日くらいからヤクルト1000も買って飲むようにして、体調・睡眠万全の状態に調整しました。

image.png
↑最強2 みんなも健康に課金しよう

1日目(開会式・リハーサル)

初日は開会式・環境に慣れるためのリハーサル・チーム紹介などをしました。

ここでICPC Tシャツをもらいました。今年は灰色でした。無難に着やすい色でありがたいと思います。またJane StreetのTシャツが机に置いてあり、自分はソファ問題のTシャツをもらいました。

ICPC Tシャツとネームタグが明日の必須持ち物です。早稲田の先輩にはネームタグをなくして炎上した名誉先輩がいるらしいので、これには細心の注意を払います。

リハーサルでは、初動のシミュレーションや設定の確認をしました。自分は基本的にPCに触る機会が少ないのと、自分が実装するとしても変換やフォーマッターは基本使わないので設定の確認はチームメイトに任せていました。

チーム紹介ではラストイヤーということで自分がマイクを握らせていただきました。「WasedaのWAは"Wrong Answer"ではなく"Winning Answer"!」的なことを言いました。(Winning Answerはtoku君が考えてくれました。競技クイズ界で優勝を決定づけた答えのことをこう呼ぶ慣例があるらしいです)

チーム紹介を終えて、各々帰宅しました。Y1000を飲んで、AtCoderの問題()これだけ解き、22時半に布団に入ってYoutubeを軽く見て、23時に就寝しました。

2日目(コンテスト本番)

コンテスト前

6時10分に起き、チームメイトに起床成功の旨を伝えます。全員ちゃんと起きれていました。優秀ですね。

8時半に受付開始ということで、8:19に日本大通り駅着の電車でいいかと考えていたのですが、他のみんながもう少し早い、8時00分台の電車での到着予定を出していて焦りました。しかし渋谷での乗り換えに大成功し、奇跡的に8:06着の電車に乗ることができました。

ここで奇妙なデジャブに襲われ、昨年のtcknyoのdiscordを見返すと、全く同じことを自分がしていたそうです。余談でした。

会場に着くと8:15くらいに全員集合できたので、受付開始と同時に中に入りました。

受付を済ませると荷物を置くスペースがあり、そこで飲み物、ライブラリ、ノートなど必要なものだけ取り出していきました。去年は荷物をビニール袋に入れて席の後ろあたりに置いていたはずなので、この辺りは若干変わった気がします。

早めの集合のおかげで、1番か2番くらいに会場に入って座って待つことができました。待っている間は昨日のABCの話をしたり、数学パズルの本をtoku君が持ってきていたのでそれを読んで考えたりして過ごしました。ゆっくり雑談できて、かなり緊張をほぐせたような気がします。途中トイレに向かうと、荷物を整理する場所でかなりのチームが詰まっていたので、やはり早めに動けてよかったと思います。

全チームが入場すると、急に「5分後に始めます」→「やっぱ3分後に始めます」というアナウンスがあり、去年の経験からコンテストが急に始まることは知っていましたが、「やっぱ」があるのはさすがに想定外の出来事で驚きました。

コンテスト開始

A~D問題をザッと眺めると、Dは問題文が短くて入出力も簡単そう、Bが長くて難しそうです。直感的に、D→A→C→Bの順番で読み進めました(この読み進めた順番は講評の予想難易度とほぼ同じだと後に分かり、一人で震えていました)。また今日は英語の調子がよく、かなりスムーズに読み進めることができました。

初動 〜D

Dはすぐ読めて、解けそうな見た目がしますが、初動は問題把握を優先したかったこと、実は難問である可能性も考えて、深い考察はせずにAを読み始めました。

Aを読み終えたくらいのタイミングでDのACが出たので、Dを二人に共有します。みんなで数分考えて「これは解けます」という頼もしい言葉がk1suxu君から出たので、完全に任せて自分はC、Bの読解に入りました。k1suxu君・toku君が考察を詰めきって、どちらが実装したか覚えてないですがDをAC(0:20)。

〜E, H

その後すぐにEのACが出ます。若干読解に不安があるということで一応自分もEを読むと、豆腐を切ってk個の最大の立方体を作るという問題で、いつもの問題に見えます。答えで二分探索がパッと思いつきますが、有理数で出力ということで、そこが難しそうです。

数学っぽい問題はtoku君が得意そうなので一旦任せて、自分は担当範囲(A~D)を読み終えました。k1suxu君はI~Lを読んでいるようです。そのうちC,Hが解かれ始めたので、Cをk1suxu君に共有して、まだ誰も読めていないHを読み始めました。

U字の#のみから、与えられた盤面を構築できるかのyes/noの問題です。左上から見ていって、#があったら正方形の角と考え、貪欲に見ていく解法が考えられますが、ロの字に#が配置されている時にどうすればいいか分からず、一旦k1suxu君に共有。すぐに「制約ってどうなってますか?」という質問が出て、自分も再確認すると、k>=5。これがいい性質らしく、yes盤面なら一意にU字を決定することができると二人で確信し、ほぼ解けました。U字の判定に#の累積和を使ったため一度チェックした#の削除が難しそうですが、BITでできるらしくk1suxu君がAC(1:20)。

Hの考察をしている間、Eの考察・実装をtoku君がしてくれていました。若干紆余曲折ありましたが、そのうちほぼ模範解法のアイデアがtoku君から出てきたので、それをtoku君が実装し、その間に自分は一応正当性の証明を考えました。直方体の側面の長方形に正方形を敷き詰めることをベースに証明をし、正当性があることを伝えてtoku君がAC(1:32)。

〜I

ここからなかなかACが出ませんでした。A,C,I,Jあたりが解かれていたのでその4問を並列してみんなで共有し、考え始めました。

確か初めの方はk1suxu君がC、僕とtoku君でI,Jを考えていた気がします。Iはゲーム、Jは全ての2*2に"ICPC"を配置する問題です。どちらも色々実験をして、Iは利得に注目してA--A、B--B、A--Bの区間については利得が一意になること、Jは周期性があるっぽいと分かりましたが、明確な解法までは出せず、そのうちAが多く通され始めたので自分がAを共有しました。

Aは2*10^18の盤面に1*1のタイルがいくつか存在し、それらをスライドすることができます。スライド後に1*2の畳を敷き詰めたい時、最小で何枚のタイルを動かせばいいか?という問題です。

実は自分はAに関してとんでもない誤読をしていました。「タイルは隣接マスに1回しか動かせない」のを、「何回でもスライドできる」と勘違いしていたのです。チームメイトにもそのまま共有していたのですが、この時の自分は気づいていませんでした。

Aを共有するとすぐにDPで解けそうという空気になります(誤読していますが...)。k1suxu君がC,I,Jと色々な問題を考えられそうなこと、また共有するタイミングで自分が「toku君の得意枠そう」と言ったこと、または他のなんらかの理由で、toku君がAの考察・実装担当になりました。
この選択によりここから2時間半、彼にとっての地獄が始まりました。

Aをtoku君に任せて、k1suxu君とI,Jの考察を進めます。Jは、k1suxu君からxorを使ったり連立方程式に帰着させるなどのアイデアが出て、割といい感じの解法に聞こえましたが、実装までは進みませんでした。

一方でIのゲーム問題は、区間の利得に注目するのが良さそうなことまでわかっていたので、----のケースやA---みたいなケースを考え始めました。ここでk1suxu君の場合分け力・コーナーケース力が光り、端もうまく区間に帰着できそうなことがわかったので、k1suxu君が解法を詰めてそれを聞いて良さそうとなりました。ここまで色々な問題に手を出したり、考察に時間を使ってしまいましたが、k1suxu君が実装してAC(3:54)。

〜J

AのDPが大変そうで、サンプルも中々合わない状況だったのでk1suxu君がtoku君のサポートに回りました。自分の誤読はサンプルには影響が出ないタイプの誤読だったので、ここではまだ気づきません。

自分の手が空いたのでJを考えます。すでに色々考察はありましたが、一旦破壊して、完全に0から考え始めます。紙で実験をしていると、やはり縦横いずれかの方向にmod2の周期性がありそうな気がします。そこで、「yes盤面は2*n(あるいは2*m)に圧縮できる」という大胆予想を立てます。2*nに圧縮すると比較的簡単な問題になるはずです。k1suxu君に予想と圧縮方法を共有しつつ、圧縮後は全探索が可能になると気づけたので、頑張って実装してもらって、k1suxu君がAC(4:44)。

〜終了

最後、toku君が一人で頑張っていたAをみんなで考えます。一生合わないDP、無限プリント&印刷&目視デバッグによりかなり大変そうです。途中、DPからくるストレスにより、toku君が急に立ち上がって机上の紙をグシャグシャにするなどの奇行も見られました。k1suxu君は「まだ時間はあるから大丈夫」とtoku君に声をかけていました。自分は後ろでんふふふと声を出して笑っていました。競技中のハイライトだと思います。

笑っている場合ではありません。ここでk1suxu君が僕の誤読に気づきます。自分は大戦犯に気付き、顔面蒼白、膝から崩れ落ちました。自分は結果的に2時間半チームのエースを虚無と戦わせてしまっていました。もう時間もなくどうしようもなかったので、実は誤読した結果奇跡的に同じ問題を解いている可能性に賭け、提出してもらいましたが当然WAです。

ここでコンテストが終了しました。DEHIJの5完、順位表凍結前24位くらいだった気がします。

閉会式・交流パーティーなど

反省する間もなくすぐに荷物をまとめて閉会式会場に移動し、問題解説と順位の解凍が行われました。自分たちが5完でペナが750分なのに対し、1位のストゼロは9完でペナ777分なので、強すぎるな...となっていました。

その後写真撮影などが終わり、1階に戻って交流パーティーが始まりました。色々な企業のスポンサーブースがあったり、ご飯や飲み物が置いてあります。自分たちはまずスポンサーブースを見て回ることにしました。ここで、「まずはもらったノベルティを入れるための袋をもらいに行こう」という最適戦略がk1suxu君から提案され、ガイオテクノロジーさんの袋をもらいました。ありがとうございます。

そのあとも複数の企業を見て、Tシャツ、クリアファイル、ボールペン、ぬいぐるみなどを色々もらいました。ありがとうございます。自分は当たりませんでしたが、JETBRAINSは抽選でAIの無料使用権を配っていたらしく、初めて見るノベルティの在り方だな...と思いました。

またノベルティではないですが、大会で実際に使用されたキーボードを配布されていました。耐用年数の関係か、来年からキーボードにスポンサーがつくからなのかは分かりませんが、売るとかではなく学生に配るっていうのは太っ腹です。普通に練習環境を揃えられるのはデカいですね(自分も後輩に渡したいと思っています)。
(追記:こういう理由らしいです→https://x.com/mayahjp/status/1998601200028311956?s=20)

1日目に余ったJane StreetのTシャツも配っていたので、ICPC Tシャツ、フィックスターズでもらった分も合わせて5枚もTシャツをもらってしまいました。パジャマ、ボルダリング用にしたいと思います。うれしいです。

またインターンで一緒だった人やJAG夏合宿で同室だった人、去年のJAG夏合宿から交流がある人などと話しました。自分から話しかけにいくこともあれば、向こうから顔を覚えてくれてて話しかけにきてくれることもあったので、嬉しかったです。

交流パーティー最後の方はフォルシアさんの問題を解いていました。東京都立大のtriCがスマホコーディングで問題を解いていて、そこに混ざってデバッグしたり人力で答えを考えたりしました。triCのスマホコーディングが完成し答えを伝えに行っていましたが、その直前に正解報酬のノベルティ(今治のハンカチ)が尽きてしまったようで、悲しそうでした。

クローズの時間が来て、会場を去りました。非常に楽しかったです!一緒に話してくれた方ありがとうございました。

パーティー中あまり飲食はしなかったので、その後チームで中華街に行って中華を食べました。

東北人家 新館(https://maps.app.goo.gl/AkTUBUeh3Z7drpdF8) というところに行きました。辛いトマト麺やよだれ鶏、クソデカ餃子を食べました。麺は具沢山・モチモチで、またよだれ鶏が本格的な痺れる辛さのもので非常に美味しく、大満足でした。
ここ、かなり当たりだと思います。ぜひ来年以降で行くお店に困ったら行ってみてください。

(個人的に中華街の中華はかなり当たり外れが激しいと思っていて、これが本場の中華...!と感動することもあれば、インスタント麺だろこれ!みたいなところもあります。いつも行くところが閉まっていてギャンブルだったので、大当たりを引けて良かったです。)

終わりに

2年目ということもあり、あまり緊張することなく、また体調管理も完璧で100%楽しんで&集中してコンテストに挑むことができました。
コンテスト前、自分は1完も貢献できないことが全然ありうると思っていたので、Jのメイン考察を思いつけて良かったです。4年以上続けてきたコンテンツなので、最後にICPCという大きな舞台で自分の貢献を残せたことは非常に嬉しいと思います。

また国内予選・横浜Regionalと共に戦って主に自分をキャリーしてくれたk1suxu君とtoku君、色々なサポートや自分がICPCに関わるきっかけをくれたコーチのchimakiさんに感謝です。来年は自分がコーチとなって選手をサポートしたいと思います。

競プロer、ICPCやオンサイト大会に出ましょう。競プロコミュニティに参加しましょう。楽しいです。
非競プロer、競プロをやりましょう。楽しいです。

最後に、自分の次なる目標は青色になることです。現在のレートは1381、来年の3月末までに行けるといいなと思います。早く到達して入青日記とか書きたいですね。以上です。

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?