feature image

2025年12月4日 | ブログ記事

ICPC 2025 Taichung Regional 参加記

この記事は、PCでの閲覧を推奨いたします。

こんにちは、jupiter_68です。

The 2025 ICPC Asia Taichung Regional Programming Contest (以降は、Taichung Regional) に、Tsukuyom1 というチームで参加して、銀メダルを獲得したので、参加記を記します。

別視点(Oxojo)です。私のブログよりは詳しく書かれていると思います。

ICPC Taichung Regional 2025 (Oxojo 視点)
11/15 - 17 に台湾で行われた ICPC Taichung Regional 2025 に参加しました。 国内予選までの記録はこちらに書かれています ICPC 2025 国内予選 参加記 (Oxojo 視点)ICPC 2025 国内予選に参加しました。 チーム構成 * Oxojo (AtCoder: Oxojo) * ZOI (AtCoder: ZOIZOI) * jupiter (AtCoder: jupiter_68) 24B の中で 1・2 レベルに強い 2 人が来てくれました。 チーム名は Tsukuyom1 です。なんとなく日本っぽさがあるいい感じの名前を ChatGPT に考えてもらった 探した結果こうなりました。最後を 1 にした理由は、なんとなく見た目のバランスが良いかなと思ったからです。小文字の

別視点(zoi_dayo)です。同様に私のブログよりはわかりやすいと思います。

ICPC Taichung Regional 2025 参加記 (zoi_dayo視点)
この記事はアドベントカレンダー2025 4日目の記事です。 はじめに 24Bの @zoi_dayo です。普段はゲームを作ったり絵を描いたりたまに競プロをしたりしています。 11/15,16に開催された ICPC Taichung Regional に参加してきたので記事を書きます。 ICPC Regional ってなに この記事を開く方なら知っているかもしれませんが、一応。 ICPCは大学対抗国際プログラミングコンテストです(略)。いろいろ細かいルールがあるのですが、基本的に大学内で3人チームを組み、 地区予選 (日本予選) → Regional (日本大会) → Playoff (アジア太平洋大会) → World Final と進んでいくことになります。 東京科学大学は東大・京大に続く競技プログラミング強豪校であり、競技プログラミングのプレイヤーの層が非常に厚いです。しかもtraPが取りまとめるおかげでICPCへ参加するハードルが下がっており、地区予選には25チーム前後が出場します。 ここから日本上位n位までが勝ち抜ける...というルールであればよいのですが






































これで、こちらの記事を見てる人はいなくなったので、ブログを締めようと思います。
明日は、@SAH123 の記事が投稿されます。お楽しみに!




























































外部の人で、もうこの記事を見ている人などいないでしょうが、何も書かないと、チームメンバーに何言われるかわからないので、一応少しだけ書いておきます。
知っての通り、駄文なのでご了承ください。(繰り返しになりますが、まともな記事が読みたい方は、Oxojo, zoi_dayo の記事を読んでください)

有益なことを書く気は無いので、台湾Regionalの参考にしようとしてる人は、こんなの読むより精進してください。




チームメンバー

Oxojo

主に実装担当。数え上げや数学、幾何に強い。タイピング速度は筆者の3倍という脅威の速さ。
チーム内で一番競プロ歴が長く、幅広い出題傾向に対しての知見を持っている。

zoi_dayo

実装も考察もできる。データ構造に対しての知見に特に長けており、特に木構造に対しての知識は一級品。
ABCチックな典型問題はチーム内で一番強いほか、環境構築なども詳しい。

jupiter_68

主に考察担当。というよりタイピング速度がカタツムリ並なので実装ができないだけ。
構築・パズル・Adhoc が得意、というより好き。ARCだけはチーム随一。

Hemimor

私たちのチームのコーチを務めていただいた。
以前にはICPC World Finalで金メダルを持ち帰った実績もある偉大な先輩。
改めて、本当にお世話になりました。ありがとうございます。

大会前

同学年チームとして、Yokohamaに出場したいという目的で集まった私たち3人
魔の国内予選で、無情にも敗北を喫してしまった私たちは、紆余曲折あり、海外Regionalへの参加を決意した。
台湾を選んだのは、色々な要因が重なったからである。(期末試験に被っておらず、Site Score が良く、渡航費が比較的安かった)
台湾Regionalへの参加に関してはチーム全員が乗り気であり、参加が決まってからは、週1,2程度でチーム練習を行なった。JAG合宿の他、Ucup 4thの参加や、台湾大会を中心とする東アジアRegionalの過去問を主に使用した。

個人練習としては、得意分野を伸ばすこと、英語の問題文に慣れること、重実装の問題の効率化を目的に、「codechefの参加、JOI過去問埋め、飽きてきたらARCの青〜黄diffを考える」といった方法を採用した。

台湾Regional直前に先輩方が、STPC2025を開催していたので、チームで参加する予定だったのですが、直前で私がインフルに罹ってしまい...
危うく台湾の渡航自体が中止になるところだったのですが、2日前に快復したとの診断をいただき、台湾渡航中止だけはなんとか回避することができました。
本当にみなさん気をつけましょう。気をつけてください。

ライブラリに関しては、チームメンバー2人が殆どを作成してくれた独自ライブラリを持って行った。本当にありがとう。

荷造りだとかに関しては、正直他の人のブログでも読んでくれと思うが、 滞在日数的に服がどうしても嵩張るため、圧縮袋が役に立った。

Day0

海外渡航どころか、飛行機すら初めてだったため、成田空港のあらゆる事象が新鮮でとても面白かったです。
飛行機が離陸する瞬間とかは楽しかったですが、いざ飛行機が空を飛び始めると、やることがない...
飛行機の中ではインターネットが使用できないので、最近始めた囲碁の本を読んでいると、時の流れは速いもので、気がついたら桃園空港に到着。pxl_20251114_064607197.mp-2

桃園空港についた後は台北を経由して台中に向かいます。鉄道に乗るにあたってiPassカードというカードを買いました。
500元で400元入ったカードを購入できるのですが、自動券売機で買うとお釣りが返ってこないので、円→元の両替をする際は、500元札が得られるような金額にしましょう。(1敗)

桃園空港から台北に行くためには、MRT と呼ばれる鉄道に乗る必要があります。私はインフルの後遺症で咳喘息に苦しんでいたのですが、MRTの電車・ホームでは飲食をすると罰金が課せられてしまうため、水分を取ることができず苦しかったです。咳をするたびに周りからの目が痛い...

台北→台中には、HSR と呼ばれる新幹線を使います。(台湾の新幹線車両は日本の新幹線が使われているので、見た目は日本と変わらなかったです)

私たちはチケット代だけ払っていてあとから実際の席と紐づけるみたいな取り方をしたところ、予約をしようとした時点ではすでに席がかなり埋まっていて、4人で座っていくとなると夜遅くなることが判明。
仕方ないので、夕食を台北で食べてから、2人ずつ席を予約して台中に行くことに。

夕食は、台北駅の地下街を散策し、謎の日本食ラーメンと書かれた店でオムカレーを食べることに。
飲み物は水ではなく基本的に炭酸がメインのドリンクバーであり、炭酸が飲めないOxojoがレモンティーを飲んでティーの味がしないと嘆いていました。

新幹線で台中駅に着くと、ホテルのある台中駅まで、乗り継いでいきます。
(注釈:台中駅は、TR(台湾鉄道)の台中駅とHSR(新幹線)用の台中駅の2つ存在し、さらに距離もそこそこ離れています。新幹線の台中駅は、TRだと新烏曰駅と言い、これ以降はこの呼び方で説明します。)

台中駅に到着し、ホテルに向かうとまさかの歓迎の看板が!!
pxl_20251115_101453290.mp

ホテルは The Enterpriser Hotel に泊まりました。
ホテルに着いた後は、インフルで出られなかった授業の課題を片付けたり、同室のzoiくんとカップラーメンを買いに行ったり、わちゃわちゃしたあと、寝ました。

Day1

朝ゆっくりと起床した私たちは、ホテルで朝食を食べた後、各自で軽く散策などをして、11時にホテルを出発。
昼食を食べる時間がなさそうということで、おにぎりをコンビニであらかじめ買っておき、シャトルバスで大会会場の亞州大学に。
----------2025-12-04-16.16.02
受付をして名札やTシャツを渡された後、チームの撮影をし、近くの北大チームと雑談。
今年は、会津大から3チーム、北大から2チーム、専修大から1チーム、そして科学大から自分たちの、合計7チームが日本から参加したらしい。今年は延長を繰り返して海外チーム10枠をなんとか埋めたとのこと。(今年は、Playoffという上位大会が台湾で開催されるから人気がなかったのだと思ってます)
会場の中に案内された後は、中国語で何かをアナウンスされた後、ICPCのお偉いさんが英語で何かを話していました。
img_9460-1
英語のリスニングが壊滅的だったこともあり、チームメンバーに通訳をしてもらいながらしばらく待つと、Practiceが開始。
各種ペナの表示がどのようにされるのかを確認したのち、各自でライブラリのタイピングをしたり、Clarでスタッフにおすすめの食事を聞いたりしました。
最後にパンをいくつか貰い、今日は帰宅。
pxl_20251115_221120293.mp
台中駅に戻り、駅前のショッピングモールで夕食を食べ、さっさと就寝...したかったのですが、9時半には布団に入ったのに、席と緊張で3時間近く寝ることができず...
前日に寝るための工夫が必要な人は、あらかじめ用意しておきましょう。

Day2

今日が待ちに待った本番です。
ホテルの朝食サービスは7時からで、ここで朝食食べていたらコンテストに間に合わないため、7時にはホテルを出発し、バスの中で昨日にもらったパンを朝食としてもぐもぐ。
会場に着いて、荷物を預けながら、改めて最序盤の戦略について話し合い。
初動は、テンプレートや実行環境をOxojoくんが実装して、その間に残り2人で問題文の分野や必要となりそうなライブラリなどを軽くまとめながら、異常に簡単な問題を探す方針に。

会場内に入った後は、緊張しすぎて何も覚えてないのですが、コンテストが開始。
(時系列は怪しいです...)

風船の種類数から全部で14問あることがわかっていたため、H問題から順番に軽く読んでいき、簡単そうな問題がないか探していきつつ、各問題の分野やぱっと見の難易度をメモしていく。

基本的に実装速度の観点から、最序盤はOxojoくんが一番解かれている問題から順番に解いていく方針をとり、A問題(0:07), E問題(0:16)をAC。

OxojoくんがE問題を解いている間に、解かれている問題を探すと、B,F,M問題が解かれているので、とりあえず、グラフのM問題をzoiくんに渡すと、これ簡単じゃない?とか言って何かを実装し、AC(0:21)。

自分はF問題を考察する。最初はunion-findとか必要か?と考えるも、実装待ちしてたzoiくんに軽く相談をしてると、区間を短く取る必要性がないことに気づけたため、AC(0:29)。

Oxojoくんとzoiくんが、その時点でB問題を解き始めており、その時点で他に解かれている問題がなかったため、各問題を見ながら、解ける問題がないか探す作業に出る。

H問題に関して、Oxojoくんと相談し、ダブリングとSuffix Arrayを使って解けるのではないかという話をするも、上手い実装法が思いつかず、最終的に放棄するという結果に。

zoiくんが、B問題で炎上しているのを横目に、他に解かれていない問題を探しながら解いてみると、J,L問題が解かれていたので、改めて問題文を確認し、方針を考える。

L問題は、区間固定の範囲swapをすると書いてたため、区間幅で割った余りごとに独立であり、範囲swapは隣と同じ要素かどうかという変更にすることで、端の2点だけ変更すると解けると推察。

各あまりごとの独立した問題に関しては、xセット増やすために最小で何回の操作が必要かというDPを構築し、
最後に各DPの結果を合わせることで解けるという考察を立てて、実装をしてみるとWA。

コーナーケースをいくつか手元で作成しながら、考察に嘘がないか再考察したり、実装上でのバグがないかを探していると、zoiくんがB問題をAC。(1:43)

同時にOxojoくんが幾何とメモがされていたI問題について解法が思い付いているようだったため、実装を行なっていると、AC(2:08)。

構文解析をzoiくんが担当しており、K問題がかなり通されていたとのことで、zoiくんがK問題を担当。

L問題のバグ修正に詰まっており、J問題がぱっと見パズルであったこともあり、
改めてJ問題について考えたところ一連の操作を2回行えば問題がなさそうという推測が立ち、証明を考える。
この方針で問題がないだろうということで、2回の操作ならば、実際にシミュレーションして解くことができないかという方針を立て、そのためにセグメント木や平方分割が必要ではないかと推測。

ところどころで、L問題のバグの原因について、理由となりそうなものが思いつくたびに確認を行うといった作業をしながら、J問題を考えていたが、上記より深い考察を行うことができず詰まってたタイミングで、N問題の構築が可能枠であるという話をOxojoくんから受ける。
L問題について方針と合わせて伝えた上で、デバッグをOxojoくんに任せ、N問題について考える。

N問題に関して考察を進めると、基本的には、サイクルから木を生やしたようなグラフがkやbの調整をすることが簡単だとわかる。しかし同時に場合分けがかなり多いことがわかったため、各コーナーケースについて考えることにする。(細かい考察を書いた紙を無くしたので省略で...)

L問題のバグの原因として考えられるものを思いつくたびに、確認し実装を変えたりするも、WAが出続け、
N問題の場合分けに関しても不備があったのか、コーナーケースを作っては間違った答えが出ないか確認をして、修正して提出。ということを繰り返すもWA。
最後の数十分は、L問題を切り、N問題の考察に残り時間をかける。

コンテストも凍結後かなりの時間が経ち、終了も間近というタイミングで、K問題のデバッグ・考察を行なっていたzoiくんが AC(4:52) と歓喜しているのを聞いて、最後に考えられる修正を全部行ってN問題を提出するもWAで、コンテスト終了。

凍結順位表をみて、本当にお疲れ様だとか、ギリギリ30位に入れるくらいかなぁ...だとか感想を話しつつ、講堂みたいな場所に移動。
お腹空いたなぁとか思いながら、解説やお偉いさんのスピーチとかを聞いてると、待望のYesNoのお時間。

私たちのチームは、K問題だけ通っており、最終結果は 28th/110teamでした。
----------2025-12-04-18.11.06

K問題が通ってなかったら30位に入れなかったので、K問題をギリギリで正解してくれたzoiくんには本当に感謝です。

コンテスト後は、北大のwinterさんが夜市にいきませんかとお誘いを受けたので、チーム全員で行くことに。

宮原眼科というアイスクリーム屋さんで、豪華なアイスを食べたり、近くの観光をしながら、夜市を回りました。
----------2025-12-04-18.16.02
pxl_20251116_130259849.mp

夜市では、zoiくんと、北大のhato_さんという方と、怖いよね、でも気になるよね。みたいな話をしながら臭豆腐を食べにいきました。
pxl_20251116_134045704.portrait

hato_さんと、大学の競プロ事情や、互いのチーム戦略について、競プロの考察方法についてなど色々なことを話すことができました。
個人的には、同じ競プロでも、かなり違った考え方をしていることに衝撃を受けつつも、非常に興味深く、また糧になる話を聞くことができてとてもよかったです。
(hatoさんのTaichung参加記 : https://hato336.hatenablog.com/entry/2025/11/19/230248)

ホテルに戻った後は、残っていた課題を片付けつつ、同時期にコンテストセッターをしていた作問ハッカソンの問題文などに不備がないかとかを確認していました。

Day3~

本当は書くつもりだったのですが、時間がないので、要約だけで。

まとめ

Regionalに参加したのは、初めてだったので、色々と知らないことも多く、とても新鮮でした。
結果としては、正直満足のいくものではなく、悔しい思いも大きいですが、メダルを貰うことができたり、他大学の競プロerの人たちと交流することができたり、得られるものも多かったと感じております。

台湾に関してですが、私のような人間でも過ごしやすく、無事に帰ってくることができたので、初めての海外にはとてもおすすめです。皆さんもぜひ台湾に行きましょう。

来年は、Yokohamaから、堂々とplayoff以降を目指せるような、こんな悔しい涙を流さなくて済むような、そんな姿を見せたいと思います。

最後に、zoiくん、Oxojoくん、Hemimorさん、本当にありがとうございました。

明日は、@SAH123 の記事が投稿されます。お楽しみに!

jupiter_68 icon
この記事を書いた人
jupiter_68

大学からpcを始めた機械音痴です。 traPでは、主に競プロを楽しんでます。

この記事をシェア

このエントリーをはてなブックマークに追加
共有

関連する記事

2025年7月9日
ZERONE ~Binary Calculator~【2025年春ハッカソン13班】
s9 icon s9
2025年4月23日
Typst でレポートを書こう!
jupiter_68 icon jupiter_68
2024年8月22日
AtCoderで水色コーダーになりました
jupiter_68 icon jupiter_68
記事一覧 タグ一覧 Google アナリティクスについて 特定商取引法に基づく表記