ICPC 2023 Asia Yokohama Regional 参加記

はじめに

初めまして。チーム「sankaKsu」のlX57(log_K)です。ICPC 2023 Asia Yokohama Regional(アジア地区予選)に出場したので、その参加記です。

国内予選で学内1位だったとはいえ全体59位での通過だったので、WFを狙うというよりは一連の大会を楽しむ事をモットーに参加してきました。

行動録

0日目(11/24)

日中までに簡易ライブラリを整備しておこうと思っていたんですが、前日27時就寝だったこともあり数ヶ月切っておらずあまりにももっさりしていた髪をどうにかするために景気付けの散髪をした後部室で爆睡します。夜に労働を終えてから慌てて準備しました。

最終的には以下のライブラリを持っていきました。

  • グラフ・フロー系
    • ダイクストラ
    • ベルマンフォード
    • ワーシャルフロイド
    • 強連結成分分解
    • HL分解
    • 最大流(Dinic法)
    • 最小費用流(Primal Dual法)
  • データ構造系
    • セグメント木(通常・双対・遅延)
    • UnionFind
  • その他
    • テンプレ
    • ModInt
    • 組合せ

正直ダイクストラとかUnionFindとかならソラで書けるんですが、変にバグらせたくないので用意しました。我が家にプリンターがないのでチームメイトのSakasu君に印刷をお願いします。

そして荷造りをして24時半に寝ました。ここ数日の僕の就寝時刻が27時〜30時だったことを考えるとめちゃくちゃ早寝ですね。参考になるか分かりませんが持ち物は以下の通りでした。

  • 競技関連
    • 蟻本・鉄則本
    • コピー用紙
    • ぬいぐるみ
  • 生活関連
    • スマホiPad一式
    • モバイルバッテリー
    • 財布
    • 着替え(2日目の服と部屋着)
  • パソコン一式
  • 筆記用具

1日目

8時半にアラームをセットしていたのに7時前に叩き起こされて悲しくなります。いつも不健康な生活を送っているので、7時前に起きたのはめちゃくちゃ久しぶりです。睡眠アプリによると7/6ぶりだそうです。朝は昨晩のカレーを食べました。

10時にsunrize君・qLethonコーチと近くの駅で待ち合わせをしているので、それまで家でのんびりします。ついでにこれを書き始めます。これを書くのに使う写真とかいっぱい撮らなきゃな〜って思いつつルールを読んでいたらリハーサルでも会場内の写真は撮っちゃダメっぽいことが分かりほにょります。ほにょっていたらコーチが遅刻しました。

12時半に日本大通り駅に着弾する行程を組んでましたが、なんやかんや20分くらい早く到着します。会場の雰囲気にわくわくしたり、Tシャツににこにこしたりして待っていました。

リハーサルが始まって、US配列に苦しみながらもCまで解いてなるほどね~ってなりながら印刷テストをしたらtotoriさんがめちゃくちゃニヤニヤしながら届けてくれてコーチ共々爆笑してしまいました。

自己紹介パートはSakasu君に丸投げしました。弊学は「Tokyo University of Agriculture and Technology」なんですが(長い)、Sakasu君がAgricultureとTechnologyを逆に言いかけてあわや東京工農大学になるところでした。

全行程終わった後宿泊場所のゲストハウスへ行き、荷物を置いてから横浜中華街でご飯を食べました。

この日のABCはなんやかんやあってUnratedで出ましたが、結構悲惨なことになりました。その後夜食を食べて風呂に入って個人比早めに寝ました。

2日目

7時に起きたので寝坊は回避しました。コーチと朝飯買いに外出たら雨が降ってて悲しくなります。

優雅に朝シャワーなどを浴びて会場に向かいましたが、着く頃には雨でびしゃびしゃになってました。来年は傘をちゃんと持ってきましょう。

なんかそれっぽい写真を撮ってそれっぽいツイートをして気合を入れます。自撮りって難しいですね。

席に着き、注意事項を聞いてコンテスト開始まで待機します。支給されていたおやつセットがメロンパン・ラムネ・チョコ・グミ・ポテトスティックなど充実していました(ところで僕の残りのおやつセットないんですけど、sunrize君かSakasu君にパクられたかな?)

9:30〜14:30 コンテスト

まずテンプレを写経してから、Aを読みます。解法は一瞬でしたが実装が割とあってびっくりします。特に沼にハマることなくAC。

次にBを読みます。 c の制約が小さく、\textrm{O}(nc) が通りそうなので実装しますがTLEします。その後尺取りを考えるもサンプルが合わず、その間にチームメンバーがFを解いたらしいのでBと一緒に丸投げして、一旦別の問題を読みます。ここまで1時間です。

Bの事は忘れてDを読みます。文字列長 n に対して文字列ハッシュ+区間DPの \textrm{O}(n^{3}) が思い浮かぶので、紙で考察をまとめつつ頃合いを見て交代、実装します。途中で何度かバグを踏んで実装に手こずりますがなんとかサンプルが通ったので投げるとWAが帰って悲しくなります。悲しくなったのでまた交代します。

相変わらずチームメンバーにBを丸投げして、僕はDの粗探しをしますがバグを直して提出→WA、ハッシュ衝突を疑い変えてみる→WAとことごとく落とされこれも一旦諦めます。

GとKを読み、Kの方が行けそうなので実装します。自分の解法では最悪ケースちょうど1024回クエリを消化するのですが、これもWAを吐いてきます。

合間合間にチームメンバーがBの修正→提出をやっていましたがどれも落とされ、結局2完55位という成績に終わりました。

解説パート・結果発表

解説パートが始まる前の小休憩の時間に、近くのテーブルにJAG夏合宿で同室だったまーたさんを見つけたので難しいねという話をしていました。(チームmasamune自体は6完してました、凄い)

肝心の解説パートですが、Bが \textrm{O}(nc) でも通せるみたいなこととDが凄い簡単そうに解説されてたのとKがディスク内の1点が分かると追加で4回クエリをすることで特定できるのが何故なのか分からなくて頭の中が「?」になってました。

結果発表パートは面白かったです。すべてのオンサイトであれやりませんか?

余談ですが持って行ったぬいぐるみが紹介されていました。ぬいぐるみの服と帽子は親が趣味で編んだもので、親は「実質優勝しました」と言っていました。

交流会

コンテスト中に色々食べたせいで全然お腹が減っておらず、あまり食べられませんでした。というか提供されていたメニューのカロリーが軒並み高くて笑ってました。

大学生になってからのオンサイトは初めてなので、ちゃんと交流ができるかめちゃくちゃ不安でしたが、交流会でもまーたさんと会話をしたのを皮切りにmasamuneの皆さんやおここさん、nok0さん、物理好きさん、hourenさん、熨斗袋さん、itigoさん、わくさん、olpheさん、kotamanegiさん、shobonvipさん、shinchanさんと色んな人と交流できて楽しかったです(あとJAG夏合宿で認知できていたのでSSRSさんにも挨拶をしましたが、自分の会話能力が低すぎて上手く会話できず変な人だと思われた気がします、すみません…)。

名刺を作っておくべきだなと思いました。もちろん作っていなかったのでいちいちTwitterのプロフィールを見せる人になってました。それと意外とTwitterが認知されててびっくりしました。

あとchokudaiさんとけんちょんさんと写真を撮っていただきました、本当にありがとうございました!

他にも企業の方から貴重なインターンのお話を伺ったり、謎のハウリングで耳を破壊されたり、スタッフが風船をすべて割って拍手が起きたりと楽しかったです。

帰路

デスク近くにぶら下がっていたラミネートされたチーム看板が思ったよりでかくてリュックに入らず手で持って帰りました。帰りの電車でめちゃくちゃ見られました。参加証と共に大事に部屋に飾っておこうと思います。

Day 3

25時に寝て、15時半に起きました。たっぷり14時間半寝ました。今11/28の午前2時にこれを書いていますが全く眠くなくて困っています。あと今週中間試験と中間レポートがあってやばいです。タスケテクダサイ

おわりに

去年のICPCは国内予選落ちだったので、今年はアジア予選に進出できてとても嬉しかったです。簡潔に参加記を書こうと思っていたのにここまで結構書いちゃったくらいには2日間楽しく、また有意義に過ごせたと思います。

ただ、肝心のコンテストは全く歯が立たず、応援してくださった同校の方々に良い結果を見せられず悔しかったです。国内予選時からAtCoderのレートが400くらい上がって、青コーダーになっていたので多少がなんとかできるだろうと思っていたのですが、青になっても何もできなかったです。来年は暖色になって国内予選に臨みたいと思います。

最後になりましたが、国内予選・アジア予選と共に戦ってくれたsankaKsuのsunrize君・Sakasu君、それからコーチのqLethonさん、当日応援してくださった農工大MCC競技プログラミング部門の皆さんおよび家族、そしてICPCの運営・スタッフ・審判団の皆さん本当にありがとうございました。