kotamanegiの取り扱い説明書

のんびり趣味の事を書いてます。

ICPC 2024 Taichung 台湾 Regional 参加記

阪大からkotamanegi_marukajiriチームのコーチとしてICPC 2024 Taichung Regional Contestに参加しました。 結果は24位で、他リージョナルでの台湾チームの活躍もあってありがたいことにChampionshipへの出場権を得ることができました。

参加申し込みと予約

kotamanegi_marukajiriは諸事情で台湾リージョナルに締切直前で申し込みしたところ、あやうく落選して参加できないところでした。 海外リージョナルの参加申し込みは先着順なので注意してできるだけ早く申し込む方が良いです。

参加が決まったら急いで飛行機とホテルを取りました。 World Finalsの場合はホテルが自動で割り当てられますが、それ以外の海外リージョナルやChampionshipの場合は自分でホテルを手配する必要があります。

trip.comで偶然安い航空券を見つける

飛行機はskyscannerを駆使して取りました。 skyscannerは安い航空券を検索できるサイトで、定期的に巡回するとたまに激安航空券が落ちていることがあります。 本当は往復券をHISで取ると預入手荷物が付いてくることがあるのですが残念ながら高かったので、行きと帰りを分けた上でエアアジアの値段が落ちたタイミングを狙ってtrip.comで取りました。

Googleストリートビューでホテルの下見をする

Googleストリートビューを見ながら良さそうなホテルを物色し、Chance Hotelという台中駅前のホテルを取りました。 ホテルも予約が遅いと値段が上がっていくのでやはり早めに取る方が良いです。 その他に参加費などの支払いも済ませてから出発しました。

Day 0

行きの飛行機

飛行機の都合で前日から台湾に行き台中で前泊することになりました。 台湾のオンライン入国システムに登録し、そのまま関空から飛行機に乗って渡航しました。 LCCなので乗り心地は普通でした。

台北空港にあった看板

台湾に到着したら入国審査を済ませ、SIMカードの購入などをしました。 僕はahamoの海外ローミングサービスを使って通信手段を確保したのですが、現地の電話番号が欲しい人はSIMカードを買って差し替えるのも一つの選択肢になります。 ここで現地の交通系カード(台湾は悠遊カード)を購入してチャージしておくと便利に滞在できます。

夕食

夕食は新幹線駅のフードコートで食べました。 現地民向けに多国籍料理があり、僕は台湾の21plusというフライトチキンのチェーン店を食べてとても美味しかったです。

新幹線の内装。日本と同じ。

台湾新幹線は日本の新幹線と同じ技術を使っているため、安心して乗ることができました。 台風の影響を受けて座席指定ができないなど不便な点はありましたが無事台中駅に着きホテルに移動できました。

ホテルの内装

ホテルの値段が安いので心配していたのですがきれいなホテルでした。 立地もよくコンビニが近くにあったので食事に困ることもありませんでした。

Day 1

亜州大学 (Asia University)
コンテスト会場

初日はお昼から亜州大学に行きレジストレーションとプラクティスをしました。 ICPCのTシャツをいただき、会場でプラクティスをしている様子を見守っていました。 トラブルがあるかと思いましたが何事もなく終わりよかったです。

丸亀製麺

夜は近くのショッピングモールにあった丸亀製麺に行きました。 日本と同じ味がする普通の丸亀製麺でホッとしました。

Day 2

モスバーガー

2日目はコンテスト本番でした。 まず会場行きのバス待ち場の近くにあるモスバーガーで朝食を食べ、それから会場に向けて出発しました。

コンテスト会場の荷物預け場

コンテスト会場にはなんと荷物預け場があり、選手は荷物を預けてからパソコンの前に座るという仕組みになっていました。 コンテスト中は施錠されておりセキュアな環境で、ICPC2023 ベトナム Playoff の荷物管理よりかなり安心できる状態でした。

大学の近くにあった食堂

選手をコンテストに送り出した後は暇なのでコーチ陣で集まって近くの食堂でご飯を食べていました。 台湾語が飛び交うローカル食堂でとても新鮮だなと思いながら食事をしました。

結果発表

コンテストが終わると結果発表がありました。 金銀銅がそれぞれ1つの横浜大会と違い台湾大会では、金メダル10チーム、銀メダル20チーム、銅メダル30チームと賞の大盤振る舞いをしていました。 kotamanegi_marukajiriも銀メダル圏内に入って賞状をいただきました。 個人的にはモノが残るのは嬉しいことなので他のコンテストでも様々な賞を作ってほしいなという気持ちになりました。

観光パート

観光パートとして、日本チームの希望者を連れて夜市に行きました。 観光地にしてはお手頃なお値段でいろいろと食べることができ、台湾を満喫することができました。

Day 3-4

最終日はエクスカーションということで日月潭に行き交流をしました。

観光地の写真

日月潭は台中の近くにある湖で、観光地になるだけあって景観がとてもきれいでした。 日月潭の名物は紅茶なので海外チームと一緒に紅茶を飲む機会があり会話が弾みました。 ベトナム大会のようにスケジュールが押すこともなく充実度が高い交流になりました。

鍋の食べ放題
エクスカーションから帰ってきたあとはプチ打ち上げとして鍋好日という鍋の食べ放題の店に行きました。 AA社のアルバイトのおかげで後輩に奢る余裕ができ、AA社に足を向けて寝れません。 そのあとは台中で後泊し、翌日の飛行機に乗って関空に帰りました。

まとめ

選手時代には一回も行く機会がなく、コーチとして初めて行った海外リージョナルで貴重な体験ができました。 台湾大会はちゃんとスケジュール通りに進行しており満足度が高かったです。 日本語も若干通じるので海外渡航の初心者でも十分に移動できると思います。

コンテスト直後はChampionshipへの進出が難しそうな順位だったのですが、国立台湾大学がジャカルタ大会で優勝したことで一気に進出圏内まで入ることができました。 阪大からは、今年のICPC Championship シンガポールには横浜大会のkotamanegi_hint_kureyaと合わせて2チームが出場する予定です。 これからも応援をよろしくお願いします!

旅費

食費と現地のバス代(1回60円ほど)など細かい出費を除いた旅費は合計で1人55330円でした。

  • 飛行機代 30945円
  • 新幹線代 3068円
  • ホテル代 11835円 (4泊)
  • 参加費 9482円

台中の食費や交通費は日本より少し安めなので1人6.5万円の予算があれば十分に余裕を持って活動できると思います。 ICPC海外リージョナルは食事が出たりイベントがあったりして、海外の割に意外と安く楽しめるので興味がある方はぜひ参加してみてください。

ICPC 2024 Asia Yokohama Regional コーチ参加記

2024年12月21-22日に開催された ICPC 2024 Asia Yokohama Regionalにコーチとしてチームkotamanegi_worldとkotamanegi_hint_kureyaで参加し、それぞれ20位と12位の成績を修めました。

12/21 Day 1

今回の阪大メンバーは全員が横浜大会経験者ということで、今年は横浜に現地集合という約束にしました。 僕も9:26新大阪発の新幹線に乗って会場に向かい、地下の日本食レストランでけんちん汁を食べました。

けんちん汁

見覚えのあるぬいぐるみ。ICPC2023 WFのぬいぐるみ。

食事から帰ってくると12:50で、どこかで見覚えのあるぬいぐるみが受付で待っていました。 13:00に会場が開き、阪大メンバーは13:30ごろに集まって会場内に入りました。 今年も会場の設営は凝っていたのですが、会場内は写真撮影禁止なので共有できないのが残念です。

中華街で食べた麻婆豆腐定食

夕食は阪大メンバー・東大Screenwalkers・いちごさんで中華街に行って麻婆豆腐定食を食べました。 おいしいごはんで交流が広がりました。

7000円のホテル

夕食を取ったら、7000円で取った関内駅周辺のホテルに行きました。 12/21-22はクリスマスシーズンと被っていてホテルの値段が高く、安いホテルを選んだのですが普通のビジネスホテルで本当に良かったです。 翌日も早いので断続的に寝たり起きたりを繰り返しながら就寝しました。

12/22 Day 2

今年は寝坊するメンバーがおらず、予定通りにコンテスト会場まで全員を送り出しました。 コーチはコンテスト会場内に入ることができないので、3階にあるコーチ控室でしばらく談笑していました。 コンテストが始まってしばらくすると問題が届いて「難しいですね~」と話に花を咲かせていました。

ランチ会の中華料理。とてもおいしい。

お昼はスポンサーのHuawei関係者にランチ会に誘われて中華料理をいただきました。 食事も美味しかった上に、Huawei研究所の話など様々な話が聞けて有意義な会になりました。

ランチから帰ってくるとコンテスト終了1時間前になり、順位表凍結が始まっていました。 hint_kureyaがPlayoff圏内・worldが∔1完でPlayoff圏内となりドキドキハラハラしながら順位表を見守っていました。

Yes/No結果発表

結果発表では両チームとも凍結後ACはなく悲しい結果に終わってしまったのですが、hint_kureyaがPlayoff進出ほぼ確定・worldが企業賞受賞という成果を持ち帰ることができて良かったです。 その後の懇親会ではご飯を食べながらPlayoff進出予定のチームに声をかけ、Playoff用のdiscordサーバーに招待するということをしていました。 少し交流時間は短くなってしまいましたが、たくさんの選手・スタッフ・企業の方と交流ができて良い経験になりました。

まとめ

横浜大会にコーチとして参加するのは初めてでしたが観戦も楽しめて良かったです。 コーチとして参加すると少し裏側も覗けて、来年度もICPCに関わっていきたいなという決意を新たにしました。 翌年2025年2月27日-3月2日にシンガポールで開催されるPlayoffに横浜大会の kotamanegi_hint_kureya と台湾大会の kotamanegi_marukajiri が参加する予定です。 引き続きシンガポールでも応援よろしくお願いします!

ICPC2023 World Finals Astana 参加記

2024年9月15-20日に開催されたICPC2023 World Finals Astanaにチームkotamanegi_marunageで参加し、ICPC本番が3完110位・ICPC Challengeが15位でした。 メンバーはvwxyzさん・kuhakuさん・kotamanegiで、コーチがolpheさんでした。

9/14 Day 0 — 韓国トランジット

仁川空港で食べた夕食。おいしかったです。
今回カザフスタンに行くにあたって、日本からの直行便が就航していないため、日本 <--> 韓国 <--> カザフスタンというように韓国経由のルートで移動することになりました。 乗り継ぎに余裕を持つために韓国で日を跨ぐ計画としたので、日本 -> 韓国に飛んだ後は仁川空港周辺で宿を取りしばらく待機していました。

仁川空港には手ごろな価格のレストランが多くあったので、適当なレストランに入り夕食をとりました。 牛肉ユッケが入ったオムライスのようなものが出てきてとても美味しかったです。

9/15 Day 1 — カザフスタン到着

カザフスタン行の飛行機で出た機内食

早朝から飛行機に乗り、韓国 -> カザフスタンに向かいました。 飛行機に乗る時間が6時間ほどだったので、機内食も豪華なものが出てきました。 こちらも日本人の味覚に合う味でとても美味しかったです。

ICPC中に宿泊したホテル。ここだけ中華な雰囲気を醸し出している。

ホテルに移動すると、いかにも中華な建物が出てきて驚きました。 後から聞いた話によるとアジア地区からWFに進出したチームは中華圏ということでまとめてこのホテルに宿泊したらしいです。 フロントなどの中の施設も豪勢でしたが、和の雰囲気がないため滞在後半ではホームシックになっていました。

9/16 Day 2 — オープニングセレモニー

朝食会場

朝食からさっそく豪勢な食事が出てきました。 この他にも様々な中華おかずや卵料理が出てきて、食べるものに不自由しない生活を送ることができました。 ただし滞在期間中に日本食が出てくることはなかったので、食でもホームシックになりました。

記念撮影

この日は出席確認 (Registration) & オープニングセレモニーの日だったので自由時間が多く、会場内にあるブースを十分に回ることができました。 写真を撮ったり、ブースで飲み物を振る舞ってもらったりと楽しい時間を過ごしました。

開会式会場

開会式は四方向全面が液晶モニターの部屋で行われました。 ちょっとした演出も大迫力になって大変楽しめました。

ホテル屋上のバー

夜になってホテルに帰り、少し時間があったのでホテル屋上のバーに寄りました。 洋楽がBGMとして流されている良いムードのバーで癒されるひと時でした。 おいしいサラダを食べることで野菜不足も解消できました。

9/17 Day 3 — ICPC Challenge powered by Huawei

この日はICPC Challengeと呼ばれるICPC併設コンテストに参加しました。

ICPC Challenge前のカフェオレ

ICPC Challenge前には少し時間があったので、スポンサーのFreedom社からカフェオレを振る舞ってもらいました。 ミルクが濃くて美味しかったです。

ICPC Challengeの最終結果

ICPC Challengeの問題テーマは計算機クラスタ上で計算ジョブを実行するときに割当する計算機を決めて通信量を削減するというジョブスケジューリング問題でした。 コードを書きながら問題文の読解を進めていたのですが、問題文を正確に読解できたころには制限時間3時間が過ぎてしまっており15位という結果に終わりました。 景品は得られなかったものの問題テーマは目を惹くテーマで楽しい競技でした。

重大情報

Day 4とDay 5の朝にホテルから出発するバスの出発時間変更がICPC Challenge直後に伝えられました。 バス情報は選手のみに伝えられており、コーチやRCDには連絡が入っていなかったため連絡の必要があり少し面倒でした。

9/18 Day 4 — ドレスリハーサル

この日はリハーサルということでコンテスト前の調整日でした。

ワニ博士とトロフィーの写真

リハーサルということでほとんどの時間帯で写真撮影が禁止だったのですが、なんとかトロフィーの写真を撮ることができました。 ICPC本番で優勝するともらえるみたいです。

9/19 Day 5 — ICPC本番

大阪大学のプラカード

ICPC本番は朝早起きしてコンテスト会場に向かいました。 コンテスト会場入場時にはプラカードを持って入場しました。

本番ではFA狙いでいい感じに問題を分担する戦略でした。 以下が本番での実際に流れです。

  • 0:00 問題文を読み、D問題がpriority_queueを用いた貪欲解法で出来そうだと見当を付ける。
  • 0:29 気が付かない間にB問題がACされる。D問題を放棄して簡単そうなF問題に取り組む。
  • 0:50 D問題がフローで解けそうという話になりライブラリ写経が始まる。今考えればこれは致命傷の嘘だった。 F問題がわかったので隙間時間で実装をする。
  • 1:20 F問題をACする。C問題を見て実装ゲーだと気が付き、隙間時間で実装を始める。
  • 2:26 C問題をACする。D問題やI問題でサンプルが合い始めるが提出するとWAが出るためデバッグが始まる。
  • 3:00ごろ デバッグが終わらないためヘルプに入ることにする。
  • 3:30ごろ I問題の実装係を交代し、自分で書くことにする。D問題とのパソコンの取り合いが始まる。
  • 4:00ごろ I問題を書き終わるが、提出するとWAが出る。ここでD問題に全てを託しパソコンを譲る。
  • 5:00 両方ともACが出ずそのままコンテストが終わる。

その結果、3完110位ということになってしまいました。 まだオンラインジャッジが解放されていないので真相はわかりませんが、どこにバグがあったのか知りたい気持ちでいっぱいです。

表彰式
その後は表彰式があり、豪華な食事が出てきました。 順位は良くなかったですが、食事はとても美味しかったです。

9/20 Day 6 — アスタナ観光①

この日は飛行機待ちの時間でアスタナを観光しました。

アブダビプラザ
プラザ内のレストランで出てきたハンバーガー

まず中央アジアで最も高い建物と言われるアブダビプラザに行きました。 内部は普通のショッピングモールになっており食事やショッピングが楽しめました。

カーンシャティリー

そのあとはカーンシャティリーという市内最大のショッピングモールに行きました。 中は普通のショッピングモールになっており、スタバやバーガーキングなどの国際的チェーン店がありました。

カーンシャティリーからのバイテレクの写真

外に出てみると良い時間帯になっており、アスタナの展望塔であるバイテレクを中心に捉えた夜景が楽しめました。 このあとはゆっくり食事をとってホテルに帰り一泊しました。

9/21 Day 7 — アスタナ観光②

この日は体調不良者が出ていたので早めに空港に移動し、空港で暇をつぶすことにしました。

空港にあったコマツの広告

小規模な空港でしたが、コマツの広告が中心部にあったり、ドリンクディスペンサーが各地にあったりと楽しめる構造になっていました。 椅子の座り心地もよく気持ちが安らぐ空港でした。

ゲームの筐体をイメージしたジオラマ

カザフスタン -> 韓国の飛行機に乗る前に、hanava723さんとshiftpshさんからARHN (@ARHN_drawing) / Xさんが制作した、maimaiというアーケードゲームの筐体をイメージしたジオラマをいただきました。ありがとうございます。 画面がくるくる回る仕様になっており見た目でも楽しめるジオラマになっています。 韓国のイベントで頒布しているそうなので他のグッズも見に行ってみたいなという気持ちになりました。

9/22 Day 8 — 韓国トランジット、そして帰国

空港の近くにあったカジノ

韓国では空港の近くにあるカジノに寄りました。 1回転約100円がデフォルトのスロットや1回1000円スタートのカードゲームなど賭け金が高く、小心者だったのでちょっとだけプレイして勝ち逃げしました。 フリードリンクだったり食事が無料で出てきたりして体験が良かったです。

最後は空港内の韓国KFCで韓国オリジナルのジンガータワーバーガーを食べました。 中身はハッシュポテト+チキンの二段構えでカロリー爆弾な代物でした。 ジャンクフードを食べる機会がなかったのもあり、韓国らしいジャンクフードを食べて大満足でした。

まとめ

私にとってはICPC2023 World Finals Astanaが最初で最後のWorld Finalsとなりますが、カザフスタンという普段行くことはないであろう地を十分に楽しめました。 コンテストの成績には少し心残りがありますが精一杯を出し切れたと思います。 チームメンバーのkuhakuさん・vwxyzさん・コーチのolpheさん、そして大阪大学を応援していただいた皆さま、どうもありがとうございました。 私とkuhakuさんはここでICPCからは引退ですが、大阪大学としての競プロ活動、そして後輩のICPCへの挑戦は続くので引き続き応援をよろしくお願いします。

The 2024 ICPC Asia Pacific Championship 参加記

2024年2月29-3月4日に開催されたThe 2024 ICPC Asia Pacific Championshipにチームkotamanegi_marunageで参加し、6完大学別順位14位・全体19位でした。 メンバーはvwxyzさん・kuhakuさん・kotamanegiで、コーチがolpheさんでした。

前準備

航空券の予約メール

olpheさんが体調不良で大会に参加できなくなり、僕がkotamanegi_marunageとkotamanegi_mijingiriの6人分の航空券や宿泊の手配などを行いました。 とりまとめは大変でしたが、非常に良い経験をさせていただきました。

Day 1

初日は、日本からベトナムまで飛行機で移動しました。

行きの飛行機

関空でkotamanegi_marunageとkotamanegi_mijingiriで6人集まり、さらに京大勢の6人とも合流して12人で飛行機に乗りました。

サントリーブランドのTEA+という飲み物。日本のウーロン茶とは違って、とても甘いです。

到着先のベトナムのノイバイ空港では、さっそく海外の甘いウーロン茶の洗礼を浴びました。 サントリーブランドなので安心して飲もうとしたら、とても甘くてびっくりしましたが予想外に美味しかったです。

(左)ホテル (右)ホテルに備え付けのパナソニック製ドライヤー

空港からはICPC運営が用意してくださったバスに乗り込み、今回の宿泊先であるCầu Giấy Hotelに向かいました。 ホテルはとても綺麗で、内装も日本のビジネスホテル並みだったので快適に過ごすことができました。

Day 2

2日目は、開会式やPracticeがありました。

(左)ICPCのチーム写真 (右)開会式会場

バスに乗り込んで着いた開会式会場では、ICPCのチーム写真撮影をしたりベトナムの著名人の話を聞いたりしていました。

(左)コンテスト会場 (右)昼食

開会式の後、コンテスト会場に移動して昼食を摂り、Practiceに参加しました。 昼食はごはん+チキン+汁物という日本でもおなじみの構成で、大変美味しかったです。 Practiceでは会場を飛ぶ謎のドローンや外のクラクションに悩まされながらも無事に全完相当の成績を取ることが出来ました。

Day 3

バスに乗り会場に着き、コンテスト本番を迎えました。

コンテスト本番

滑り出しの戦略は、

  • kotamanegi: PCのセットアップ
  • vwxyzとkuhaku: 問題文を読む

でした。

以下は記憶から掘り起こしてきた時系列情報です。

  • -0:30: コンテスト前にライブラリの一部没収を告げられる。悲しい。
  • 0:00 ジャッジシステムへのログインに失敗する。苦戦していたところ、アナウンスで不具合の連絡があった。
  • 0:10 ジャッジシステムが復旧し、ログインに成功する。
  • 0:30 HをAC。いつの間にか通っていた。Jのコーディングを始める。
  • 0:49 JをAC。ペナルティを1個出したが、順当にうまく通すことができた。
  • 1:21 CをAC。WAが出て苦戦しているのを眺めていたら通っていた。僕がE、他の2人でGの実装を始める。
  • 1:59 GをAC。プレッシャーを感じながらEを書く。
  • 2:06 EをAC。とりあえず一安心し、K問題の実装方法を考えていく。
  • 3:07 FをAC。Kを書き始める。
  • 4:20 Kが書き終わり、提出を始める。TLEではなかったが、WAとなり困り果てる。
  • 5:00 Kが間に合わず、コンテスト終了。

コンテスト後

6完はできたものの、Kが通らなくて悲しい気持ちになっていました。 後日解きなおしをしたところ、答えの保持にint型を使うとオーバーフローしてしまうというのが真相らしいです。 バグの原因がわかって納得の一方、悲しい気持ちが残ります😢


(左)閉会式会場 (右)閉会式のステージ

コンテスト後は市内観光を少し楽しんだ後、閉会式に向かいました。

Day 4

(左)乗船 (右)タコの着ぐるみ

朝5:30に出発するバスでハロン湾に向かい、クルーズ船に乗り込みました。

(左)景観 (右)昼食

景観も食事も良く、満足度が高いクルーズでした。

(左)ティートップ島 (右)頂上の展望台

1つ目のアクティビティでは、ティートップ島の頂上まで400段程度の階段を上るというアクティビティを楽しみました。

スンソット鍾乳洞
2つ目のアクティビティでは、スンソット鍾乳洞の景観を楽しみました。

帰路のベトジェット

往復ともにベトジェットエアというLCCを使ったのですが、遅延することなく定刻通りに運航してくれて良かったです。


振り返り

僕は世間から競技プログラミングの大会では弱くはないけど強くもないという認識をされていると思います。(実際そうだと思います)中学生の頃に競技プログラミングを始めてからというもの、あと少しで国際大会に手が届くという寸前まではいけましたが肝心なところで取りこぼすというもどかしい経験が続いていました。なので今回ベトナムのChampionshipに参加できるという連絡をいただき、初の国際大会に参加できたのは僕自身としても大変嬉しかったです。

これはもう何度も書いたと思いますが、大手前高校時代に競プロのコンテストでチームを組む際も人集めにとても苦労したので、大学へ入学したときにも僕とICPCに出場してくれるような人が出てくるのか心配するほどでした。 高校を卒業する頃は大手前高校はそこそこ競プロをしている人材が増えていたので、その努力がリセットされてしまったような少し切ない気分になっていたと思います。 しかし、気心知れた仲間内でチームを組めたにも関わらず、折角阪大にこたまねぎさんが入学してくれたんだからと先輩に引っ張り上げてもらい、B1の時から予選突破を目指すチームに編成される事になりました。 自主的に勉強会を開いたりと活動も盛んになり、阪大はもしかしたら強くなれるんじゃないかという希望や期待に心が温かくなりました。 同時にもっと強くなって必ず予選を突破しなければいけないというプレッシャーとの闘いも始まりました。 後は前回も書いた通り、何年も1,2チームしか国内予選を通過できなかった阪大が、国内で3チーム、海外の国際大会に2チーム送り出せるほどまで成長を遂げ、今ひそかにWFの繰り上がりを渇望するところまできました。

また、在学中に力を入れた事の1つに阪大の運営の厳しい審査を通過し、阪大公認団体として阪大競技プログラミング部「RAINBOU」を立ち上げたことがあります。 僕としても、ICPCなどの規模の大きなコンテストでのノウハウを知見として積み上げる場としてRAINBOUが有効活用されているのを現在進行形で見てきました。 理想として、競プロerにとって安定した居場所をつくり、今まで蓄積してきた情報を惜しみなく交換できる場を作るということを目指してきました。 申請中、進捗の悪さで途中挫折しかかった時もありましたが、踏ん張って公認を得られてよかったです。

公認団体が活用された例 (出典: https://kowerkoint.hatenablog.com/entry/2024/01/09/220819 )
時代の流れがあるので強くは言えないのですが、これからの阪大競プロ部を支える柱として後輩たちにも頑張ってほしいなと願っています。

最後になりますが、もし僕たちのチームが繰り上げでWFの出場権を得られるような奇跡が起こった場合、その時こそ今回体調不良で参加できなかったコーチのolpheさんと共に、4人揃ったkotamanegi_marunageとして一緒に参加してきたいと思います。WFの出場権が得られた場合、僕が阪大生として戦う最後の場になります。もし出場できる機会があれば皆様応援よろしくお願いいたします。



阪大とIISFの双方から合わせて6人分の旅費などの支援を受けました。 大阪大学最高!

量子競プロ学習サービスQookbookについて

この記事は 競プロ Advent Calendar 2023 の 13 日目の記事として書かれました。

未踏ターゲット事業で、競プロ風に量子コンピュータの勉強ができるサービスQookbookを開発しています。

目次

自己紹介

大阪大学大学院情報科学研究科 コンピュータサイエンス専攻M2のkotamanegi (@small_onions) です。 競技プログラミングでは、1か月弱ほど前に国際大学対抗プログラミングコンテスト (ICPC) アジア地区横浜大会にて競プロ人生ではじめて銅メダルをいただきました。

その他にも、伊野研究室で量子回路シミュレータの高速化をしたり、株式会社ALGO ARTISで最適化を学んだりしています。

さて、本題のQookbookの話に移ります。

何ができるの?

物理学の事前知識なしで、競技プログラミングのように問題を解きながら量子情報の知識を身に付けることができます。 左側には問題文やテキストが表示されるスペースが、右側にはソースコードを書き込むためのスペースがあります。 ソースコードを書いたらweb上でそのまま実行しながらデバッグができ、うまく動作しそうであれば提出して採点を受けることができます。

舞台裏になる問題作成ツールなどにも力を入れており、競技プログラミングにおける「インタラクティブ問題」が簡単に書ける仕組みを作成しています。 システム面の補強と並行して、将来的に次のようなコンテンツを追加していきたいと思っています。

なぜ作ろうとしたのか?

量子コンピュータの世界には、競プロerや情報系の方が好きそうな話題がゴロゴロと転がっているのに、別分野のように見えて敷居が高くなかなか参入できないからです。 僕が量子コンピュータの世界に飛び込んだきっかけは、藤井先生のつぶやきでした。

この後に藤井先生の下で、量子回路シミュレータ Qulacs の開発を担当するなど様々な経験をさせていただきました。 特に興味を持ったのはノイズなどで生じた誤りを訂正する量子誤り訂正や、量子プログラムをより単純な制御命令列に変換する量子コンパイラなどの分野でした。 量子誤り訂正については、表面符号と呼ばれる誤り訂正符号について 焼きなまし法で誤り訂正を行うという研究 や、 フェニック木 (BIT) を用いて誤り訂正を高速化するという研究 など、どこかで聞き覚えがあるアルゴリズムを使った研究がされています。

https://qiita.com/SamN/items/c2b6b4c28bae922bc634 より引用。表面符号では青色マスを2つペアにして繋ぐことで誤り訂正を行っています。繋ぎ方によって正しく誤りを訂正できる確率が変わります。

量子コンパイラについては、できるだけ計算資源を有効活用して短時間で計算が終わるように、様々な最適化手法を使ってスケジューリング問題を解くという研究がなされています。 有名な例として、量子回路を格子手術の命令列に落とし込むために、タイルを変形するパズル問題を解くという研究があります。

A Game of Surface Codes: Large-Scale Quantum Computing with Lattice Surgery (https://arxiv.org/abs/1808.02892)のFig.11より引用。 ヒューリスティックコンテストで出てきそうな図です。

このような研究を面白いと思いながら勉強していく中で痛感したのは、学習時点では地に足が付かないような内容が多く、内容の理解がとても難しいということです。 当時から初学者向けの教材は Quantum Native Dojo などネットの教材も含めて沢山ありましたが、難しい部分に行くにつれ自分がどこまで理解しているのかわからなくなっていきました。 理解を深めるために演習問題などを解くわけですが、実はちゃんと理解していないのにスルーしてそのまま進み、後でつまづきに気が付くといったことも頻繁にありました。

それに対して競技プログラミングは、理論の理解度が自己判定しやすいため確実に一歩ずつ進めるという特徴があります。 学びたいトピックに対して大量の演習問題があり、問題を解くプログラムを提出するとその場で採点されて採点結果が返ってきます。 演習問題を解くことまでは書籍でもできるのですが、その後の採点プロセスまでもを自動化することで、人力では不可能な刻み幅で理解度を判定することができています。

この競技プログラミングの特徴を、量子プログラミングの学習にも持ち込めないかと考えてQookbookの開発を始めました。 量子プログラミングもまた一つのプログラミングの系統で、アルゴリズムはpythonプログラムなどとして記述されるので、いろいろと頑張れば競技プログラミングの枠組みに落とし込めそうだと考えました。 技術についても、高校生の頃に作った kotamanegi online judge のノウハウや、競技プログラミングなどで培った狂気の実装力を活用すれば1年弱で開発できるだろうと見積もり、未踏ターゲットに応募したところありがたいことに採択されて今に至ります。

最後に

競技プログラミングはコンテストが醍醐味の一つなので、もちろんコンテストをやります! 1/14(日)の13:00-17:00に、スコアを競う短期マラソン形式のコンテストを開催する予定です。

ささやかですが、副賞としてAmazonギフト券も用意しています。

  • 1位: 1万円
  • 2位: 5千円
  • 3位: 3千円
  • 4位〜10位: 1千円

コンテスト中も外部資料の参照はOKなので、もし予定が合えば気軽に参加していただけると嬉しいです。

謝辞

本サービスは、未踏ターゲット事業の支援を受けて開発しています。 未踏ターゲット事業では、担当PMの徳永PM様・鈴木TA様をはじめとして様々な方に助言をいただきました。 助言をいただけなければ、ここまで開発を進めることはできなかったように思います。 ここに深く感謝の意を表します。

ICPC 2023 Yokohama Regional 参加記

2023年11月25-26日に開催されたICPC 2023 Yokohama Regionalにチームkotamanegi_marunageで参加し、10完大学別順位3位・全体4位でした。 メンバーはvwxyzさん・kuhakuさん・kotamanegiで、コーチがolpheさんでした。

1日目 — リハーサル

僕は13時45分ごろに会場に着いて食事を取ったりしていました。

無事(?) 3人+1人で集合できて、受付時間内に会場に入ることができました。 リハーサルについて、Dをバグらせながらも、なんとか無事全問題をACすることができました。 リハーサル後は筑波大のチームGoodBye2023と一緒にサイゼリヤで食事を取っていました。

2日目 — コンテスト本番

チームメンバー(僕含む)は朝が弱いのでギリギリまで会場入りできませんでした。 記憶では9時ちょうど着ぐらいだったと思います。

コンテスト

戦略は、

  • kotamanegi: PCのセットアップとA問題のFA狙い
  • vwxyz: Bがインタラクティブ以外なら担当、そうでなければC問題以降を見る
  • kuhaku: Bがインタラクティブなら担当、そうでなければC問題以降を見る

でした。 結果としてはCを除く全問題ACの10完で、ある程度うまく戦略がはまったのではないかなと思います。

以下は記憶から掘り起こしてきた時系列情報です。

  • 0:00 問題とログイン用パスワードの封筒をうまく破ることに失敗。10秒程度のロス。
  • 0:08 FAは逃したものの、A問題を順当にAC。 vwxyzさんがB問題を書き始める。
  • 0:25 Bのサンプルが合わず、僕が読んですぐ解法が思い浮かんだD問題を実装しはじめる。
  • 0:40 DをAC。kuhakuさんにFを実装してもらい、その間に僕はB問題を考えていた。
  • 0:50 FをAC。僕がB問題を実装することに。
  • 0:58 BをAC。この時に10位前後で、阪大代表としてのプレッシャーが襲ってくる。とりあえず僕がK問題を、他の2人でE問題を解くことに。
  • 1:24 EをAC。僕がK問題を実装して、その間に2人でGとH問題の解法を考えてもらう。
  • 2:16 苦戦しながらKをAC。僕がG問題を読んだら5分ぐらいで解法が思い浮かび、そのまま実装。
  • 2:46 GをAC。H問題がフローということでライブラリ写経したり、解法のバグ直しなどを始める。
  • 3:52 HをAC。上位と比べて1完差があり、厳しい気持ちに。IとJを読み始める。
  • 4:10前後 J問題の解法(解説スライドのAC2)を思いつく。実行時間に関する証明ができていなかったのでvwxyzさんに止められたが、PCが空いているのでとりあえず実装することに。
  • 4:32 JをAC。最後にIに着手して、凸包の天啓が降る。
  • 4:50前後 サンプルが合うが、提出してみるとREで落ちてしまう。細かいところを変えて提出を繰り返す。
  • 4:58 IをAC。ラストスパートということで半分運任せの提出を繰り返しており、ふと採点結果欄を見たらACしていたので喜びを分かち合うよりも通っていた事に呆然となっていた。

5年の振り返り

B1から阪大の選手として5年間出場し続け、とうとう今年最後の年になりました。 最近は阪大内で活発に活動する競プロerが増えてきたのもあり、戦い続けるか悩んでいました。 本業の研究は勿論ですが6月から未踏ターゲットのPJが始動し、さらにAA社のアルバイトも入ったため練習時間を確保する事が困難になるのは明らかでした。 更にコーチを誰にお願いするか等の悩みもあり、「競プロにがっつり向き合う時間もないのだし、かつての先輩方のように後続の支援に回る事が自分の使命になるんだろうな」と思いつつ、選手として燃え尽きたいという気持ちとの板挟みになっていました。

5年間でのYokohama Regionalでの成績は初年度から21位→4位→4位→8位となっていました。そして今回の凍結前の順位は8位だったと思います。 凍結後の1時間でIとJの両方を通すことができたのは、5年間煮詰めた執念によるものだったのかもしれません。

結局全体での順位はまた4位でしたが、大学別では3位だったので初めて表彰台にのぼりメダルを受け取るという経験ができました。 競技終了2分前のブザービートACがなければあり得なかった展開だっただけにその現実を頭が受け入れていなくて挙動不審になっていたし、今となっては非常に恥ずかしいです。 まさか阪大が3位で表彰を受ける未来がくるとは想像できなかったもので…。

もう一つのハイライトとして、今年ついに阪大から3チームYokohama Regionalへの進出を決めることができました。

阪大からの国内予選の通過チーム数は5年間で1チーム→1チーム→2チーム→2チームと、通過チーム数が伸びていき今年ついに3チーム輩出することができました。 これはひとえに選手みなさんの努力と、阪大競プロ部RAINBOUに尽力いただいた方々・ICPCという場を設けてくださった方々・陰で支えてくださった皆様によるものだと思います。交流でもたくさんの方とお話しできて楽しかったです。本当にありがとうございました。





↑物理好きさんごめんね~🤣



宣伝

未踏ターゲットというIPA事業の支援を受けて、競プロライクに楽しく量子コンピュータの利用方法を学べるサービスを開発しています。 競プロ Advent Calendar 2023 - Adventar にも12月13日に寄稿する予定なのでよろしくお願いします。

ICPC2023 国内予選 参加記

2023年7月8日に開催されたICPC2023 国内予選にチームkotamanegi_marunageで参加し、5完14位でした。 メンバーはvwxyzさん・kuhakuさん・kotamanegiで、コーチがolpheさんでした。

コンテスト前

僕は12時に会場入りして、会場設営などを少しお手伝いしていました。 そのあとはリハーサルやプリンタの出力確認、初動の計画をしていました。

コンテスト中

今年の初動は問題文を印刷してから、僕がA問題を早解きするという計画でした。 初動はうまく行き、0:03:32でA問題を通すことができました。 A問題を通した直後、B問題に目を通したところ簡単に実装できそうだったので実装し、少しバグを出しながらも0:22:39にB問題を通しました。

その後は、D問題を僕とvwxyzさんが、C問題をkuhakuさんが解くことになりました。 D問題は解が7以下であることに気が付き、計算量が怖かったもののとりあえず総当たりコードを書くことになりました。 C問題とD問題の双方ともにバグを出してPCを取り合いながらも実装を進め、0:53:06にC問題が、0:58:46にD問題が通り4完でそこそこ良い順位に収まりました。

E問題は時間計算量 O(n^2 log^2 n) 程度のセグ木を用いた解法が思いついたのでそれを実装しつつ、裏でvwxyzさんとkuhakuさんに簡単な解法を考えてもらうことにしました。 実装量が多くバグに手こずっていると、kuhakuさんが簡単な解法を思いついて実装を交代することになりました。 結局バグが取れずに両方ともペナを出し、少し書き直した僕の解法で2:25:28にE問題のACを取ることができました。 この時点で13位程度になり、安心して順位表を眺めていました。 G問題を考察していたんですが、最小費用流に帰着できそうだね、と言ってたらそのまま終了しました。

コンテスト後

阪大から3チーム予選(ほぼ)通過が出たということで、達成感でいっぱいになりました。 コンテスト後半の成績的に阪大から3チーム予選通過しそうだな、という直感こそありましたが、ボーダーをきちんと覚えておらず不安でした。 コンテスト終了直後に順位表のボーダーを再確認し、3チームの予選通過が確定したことを確認できました。

3チーム通過しましたが、僕のチームは結構反省点が多い結果に終わりました。 E問題までの実装スピードが遅かったため、上位の決め手になるFとG問題に時間を割くことが難しく辛い気持ちになっていました。 実装ゲーが出たときに貢献できるよう、アジア地区予選でも頑張ります。