ICPC 2024 Asia Pacific Championship 参加記

今年初開催となるICPC Playoffに京大よりRed Phobiaとして参加しました。

Yokohamaの参加記はこちら↓

ICPC 2023 Yokohama Regional 参加記(RedPhobia yuma220284視点) - yuma220284's dialy

国内予選の参加記はこちら↓

ICPC 2023 国内予選 参加記 - yuma220284's dialy

tatyamさんによるICPCまとめtogetter↓

2024 ICPC Asia Pacific Championship まとめ - Togetter

メンバー

京大理学部の黄色3人チームです。

  • naniwazu(B4,2056) 天才考察が得意 Pythonを使う
  • TKO(B3,2096) 全てのライブラリを持っている
  • yuma220284(B2,2132) ここ3年のRated出場が2回

当日まで

Yokohamaでの結果が全体12位・同校2位だったのでWFを諦めていたが、なんか今年からもう一つRegionalが生えるらしいという話を聞いた。運がいい。

eSIMと変換タップを買った。モバイルバッテリーは持っていかなかったが、かなり充電が厳しかったので持っていくべきだった。

渡航直前にうっかりCelesteという神ゲーをしてしまい寝不足。

Day1(2/29)

初日は夕方にベトナム入りしてその後ホテルに行くだけ。飛行機は通路側の席で、隣にはカップルが座っていたからかなり広々としていた。しかしこのカップルが高頻度でトイレに行っていたので寝ることは出来なかった。

空港内の外貨両替屋で3000円両替した。隣接している両替屋同士で交換レートが違うらしく、客の取り合いをしていて面白かった。

ホテル行のバスが出るまで1時間以上あったので、空港内のバインミー?という食べ物を買って食べた。

ホテルでTシャツや参加景品、そしてコンテスト会場の詳細が配られた。座席の配置を見るとUET(開催大学の略称)の形に添って机が配置されていた(そんなことしていいのか)。うちのチームは'T'の分岐のちょい下の左側だったので開放感がある当たりの席だった。

Day2(3/1)

朝7時にバスが出るので6時起き。朝食を食べに行こうと思ったら部屋のオートロックが機能していないことが発覚。パスポートと財布以外は貴重品を持っていなかったのでまあ大丈夫だけれども。

会場に到着するとまず最初にチーム写真撮影が屋外で行われていた。なんとなく熱帯だと思っていたが、ハノイベトナム北部なので普通に日本と同じくらいの寒さで、Tシャツの下に何も着込んでいなかったのでめちゃくちゃ寒かった。また、この時に企業ブースでぬいぐるみとかを貰った。写真撮影の後は開会式があり、UETの学生っぽい人たちがダンスパフォーマンスで迎えてくれた。

昼食はお弁当が配られた。お米と鶏肉?があり美味しかった。昼食会場の周りにも企業ブースがあり、ルーレットをやってる所があったりモグラ叩きをしている所があったりした。僕はパズルが置いてある企業ブースで海外の人と一緒にむずかしめの天体ショーを解いたりした。

昼食後に全体での写真撮影があり、なんかドローンで撮影していたが、隣にあるグラウンドのネットに引っかかって事故っていた。

 

その後のPracticeは特に何もなく終わったが、夕食会場行きのバスに置いて行かれて1時間くらい待つ羽目になった。夕食はめちゃくちゃ美味しかったからまあ良し(特に刺身)。

Day3(3/2)

8時出発なので7時起き。流石に9時スタートは厳しくないか?と思っていたら当然のように30分延長された。しかもその後10分短縮する謎の演出があり、最終的に20分遅れでコンテストをやることになった。

コンテスト

風船が13色あったのでM問題まであることは分かっていた。[1mod3]問目担当なので5問見ることに。Aはかなりやりたくなく、D,Mは厳しめの数え上げ。Gがぱっと見文字列でJが簡単な最短路問題という感じだった。

naniwazuさんがH,TKOさんがFを解いたっぽい感じだったので、実装待ちの間にLの考察をしていた。解全体がベクトル空間を成すので基底のサイズを特定すれば良くて、偶数長のxorが0になっていることが線形従属であることの必要十分条件だということまで分かった。

そうこうしている間にHが通った(0:31)。Fは定数倍が厳しくTLEという感じだったので、Jを実装してAC(1:10)。その直後にTKOさんがCをAC(1:38)。naniwazuさんがBの制約の特徴に気付いて可能な頂点数と辺数を書き出していた。

TKOさんがFの定数倍を詰めている間に僕がEを考察しAC(2:24)。Gがかなり通されていたが、1≦k≦5の制約の意図が分からず沼っていた。この辺で昼食のバインミーが配られた。

ここから1時間くらいは僕がGとLの考察をしている間にnaniwazuさんとTKOさんがBとFを詰めていた。Bはケース漏れが見つかったが、そのケースに対する実装が重すぎるので終了。Fは操作する数を約数全体から素因数全体に変えることでAC(3:24)。

その後、順位表凍結直前にGの解法が浮かび実装に取り掛かったが、間に合わず29位で凍結。

凍結直後くらいにnaniwazuさんがLの天才エスパーをしていて、実験結果とも合致していたので7完を確信。4:18にGを通し、4:21にLが通って凍結前のKUB1sharpの完数に追いついた。その後はTKOさんがKを実装し、残り二人でライブラリ写経のtypo確認をしていたが、yを求める実装が重すぎて間に合わなかった。

コンテスト後

ベトナム民族博物館に行く予定だったが、かなり時間が押していたらしく、夕食会場の近くの寺院に連れて行ってもらうことになった。移動中に148Towerという建物が目に入り一人でウケていた。

 

寺院から夕食会場までは歩いていくように言われたが、横断歩道のない10車線の道路を無理やり横断しなければならない羽目になった。

夕食会場はめちゃくちゃいいホテルで行われた。式が始まる前にもベトナムの楽器でのライブが行われたが、6曲くらい演奏されて流石に飽きてしまった。

YesNoでは2回のYesによって順位がかなり上がって気持ちよかった。自分より下のチームが銅メダルだったので何か貰えるかもと思ったが、普通に同校制限がかかっていた(それはそう)。KUB1sharpはもう一問通して金メダルを取っており、清々しい位完敗だった。

 

こうしてAPCの閉会式が終了し、夕食の時間になった。この時、surveyで回答したはずの生年月日がなぜか記録されていなかったらしく、何回か呼び出されてしまった。夕食はとても豪勢で、特に魚が美味しかった。

Day4(3/3)

観光パート。ハロン湾という観光地に行くらしい。5時半に出発するので5時起きだった(え?)。朝食は出なかった(え?)。しかもバス発車直前までKUB1sharpが揃っていなかった(え?)。バスの中からは数年振りに日の出を見た。

ハロン湾の船着き場に着くと、まず最初にペットボトルを回収された(先に言ってくれ)。船に乗り込むとまず最初に謎の炭酸抜きジンジャーエールみたいな飲み物を飲まされた。

船の中はバイキングみたいになっていてようやく朝食が食べられるのかと思ったが、朝食ではなく昼食なので12時くらいまで何も食べられないらしい。昼食前にTi Top Islandというところに行き、昼食後にSung Sot Caveというところに行くという説明がされた。

各島には船から小型ボートで往復するという行き方だった。普通に定員以上の人間を船に載せており、椅子もライフジャケットも足りていなかったので転覆したら普通に死ぬ感じだった。

Ti Top Islandはバカでかい岩が一つあるという島で、500段程度の石段を上るとハロン湾を展望できるというスポットだった。頂上ではココナッツジュースが売っていたので飲んだ。美味しかった。

船に戻ると、なにやらドリンクを買うことが出来るらしいという話が耳に入った。同卓の他の9人は皆お酒を買っていたが、二十歳になってから二週間もたってないので普通にコーラを買った。

バイキングは種類が豊富でかなり迷ったが、普通に刺身が美味かった。

バイキングが終わると次はSung Sot Caveに行くことになった。人生初の鍾乳洞でかなり興奮。内部はめちゃくちゃ広くて、でかめの穴とかもあった。

船に戻るとアフターヌーンティーの時間になっており、ロールケーキがとても美味しかった。

こうしてハロン湾ツアーが終了し、あとは空港に行って帰るだけになった。空港に着いたのが19時で飛行機が出るのが25時40分だったのでかなり時間に余裕があった。空港内のお土産屋さんはいくつかあったが、一番でかいところがかなりぼったくっていて笑顔になった。

チェックインを終えた後は空港内で夕食をとることに。ベトナム料理はよく知らなかったが、みんながフォーというものを頼んでいたので同じのを頼んだ。スープが新鮮な味で美味しかった。

空港の保安検査はかなり長蛇の列で、一時間くらいはかかった気がする。金属探知機に2回くらい引っかかってWarshall-Floydかと思った。

帰りも通路側の席だったが、隣の人が離陸直後に酔っていて可哀想だった。

Day5(3/4)

なんやかんや一時間くらいは寝ることが出来て、起きたら朝になっていた。お土産も検疫に引っかからず無事帰ることが出来たと思っていたら、京大メンバーにスマホの忘れものが発生してややバタバタしていた。帰りのはるかは爆睡した。

感想

まず、このコンテストに出場出来て良かった。結果も全体13/65位、国内4/12位なので全力を出し切れたように思う。来年も組めるチームなので、もっと実力を付けて来年こそはWFに行きたい(まずは来年もAPCに出るところからだけれども)。

最後に、誘ってくれたチームメンバー、コーチのmoririnさんとsuibakaさん、全面的なサポートをしてくださった五十嵐・末永研の方々、ICPC運営・現地スタッフの方々、そしてICPCに関わっている全ての方々へ、ありがとうございました。

ICPC 2023 Yokohama Regional 参加記(RedPhobia yuma220284視点)

ICPC 2023 Yokohama Regional に naniwazuさん、TKOさん、yuma220284でRed_Phobiaとして出場しました。

国内予選の参加記はこちら↓

yuma220284.hatenablog.com

 

Yokohama Regional TKOさん視点はこちら↓

tk0-math.hatenablog.com

メンバー

京大理学部の黄色3人で組んだ。学年は離れているが、それぞれチームを組む前から知り合い。

  • naniwazu

式変形が爆速で正確

  • TKO

全てのライブラリを持っている

  • yuma220284

お茶とか汲む

Day0

世の中にはUS配列なるものがあることを知る。

Day1

早起きをして新幹線で横浜に行く。

リハーサルのAでbits/stdc++.hが読み込まれなくて困っていたが、よく見たらC++ではなくCで実行していた。あとはDを書いた。

晩は中華街に行き、そのあと8ヶ月ぶりにABCに出た。

Day2(コンテスト)

何もしていないことがバレるので書きたくない

戦略は変わらずsetting:naniwazu A:TKO B:yuma220284で行くことに。

しかしBで嘘貪欲をして2WA。バグ取りをしている間にD,E,Fが解かれていた。その上結局naniwazuさんにBを解いてもらった。(1:10+2WA)

その後H,I,J,Kを見て、割と解けそうな見た目をしているKを考えることにした。円と直線が交わらないことには始まらないので最初に500回くらいはクエリを打たないといけないことに気づく。落ち着くと円の内部の格子点を一つ特定できたら後は5クエリで行けるので、念のため幅150で横向きにローラーして、その後縦向きに二分探索をすることで大体700クエリで解ける。(2:32)

Kを解いている間にTKOさんがGを通し、Iで天才エスパーをしていた。残ってるC,H,Jのうち、Cは明らかにヤバいのでH,Jを解くことに。すでにnaniwazuさんがHの式変形を終わらせてくれていた。制約からDPかフローだろうと推察してnaniwazuさんがDP軸、僕がフロー軸で考察することにした。30分くらい考えると燃やす埋めるであることが分かるが、肝心の燃やす埋めるのやり方を誰も覚えていなかったので終了。Jは解けなかった。

Day2(コンテスト後)

Hを通せなかったことをかなり悔やしい。これがラストイヤーじゃなかったことだけが救い。

とりあえずKUB1sharpに絡みに行った。実はライブカメラの目の前だったらしく、Kの解法を共有しているところがめちゃくちゃ映っていたらしい。

その後NYCU_FriedShrimpさんから台湾お土産をもらったが、自分の英語力が無さすぎて上手く会話ができなかった。(ごめんなさい...) お土産はめちゃくちゃおいしかったです。

懇親会はCeleste部の人と喋れたので満足。

結果

8完880点で12位!

感想

ただただチームメイトに感謝。国内予選の上振れに再現性があることが分かったのは良かったが、自分のミスが無かったら一桁順位も行けたと思うとかなり悔しい。来年までにちゃんと実力をつけます。

宣伝

www.nicovideo.jp

聴いてくれると嬉しいです。

ICPC 2023 国内予選 参加記

はじめに

www.youtube.com

↑赤色が怖い/いよわ feat. v_flower

ICPC2023国内予選にRed Phobia(naniwazu, TKO, yuma220284)として参加しました。 

 

コンテスト前

naniwazuさんがチーム登録周りのことを全てやって下さり、TKOさんがライブラリ作成と環境構築を全てやって下さった。どっちも出来ないので本当にありがたい。

戦略

A:TKOさん(環境構築をするため)

B:僕

C:naniwazuさん

を固定し、あとは解ける人から解くという感じでいくことに。

黄×3なので、全体25位かつ学内3位での通過を目標にペース配分をしていました。

コンテスト中

A

TKOさんが実装してくれているので、印刷されたB以降の問題が配布されるのを待ちながらラムネを食べていました。

B

実装やるだけなのでやる。サンプルが正しかったので提出したがWA。よく見たらサンプルの時点で間違えていました(最悪)

いつも通り添え字をバグらせていると思っていたら、配列の名前を間違えていた。引退を決意。

そんなことをしている間にCとDの考察がかなり進んでいました。ごめんなさい

40分1ペナで通る。

E

Bを解き終わったときにTKOさんとnaniwazuさんがCとDの考察をかなり進めてくれていたので僕がEを解くことに。まずDP[i][(Y,X)]=min{上からi番目まで見て、i番目を(Y,X)に編集した時の編集回数の最小値}を考えるが状態数と遷移が多すぎる。数分考えると、単調性があってDP[i][(Y,X)]の取りうる値は高々2Nなので主客転倒で良いと気付く。Dが解けたっぽいので紙で実装準備をすることにした。

D

Cよりも先に考察が終わったのでDを通すことに。TKOさんが一瞬で実装していた気がする。

60分くらいに通る。

E

実装をする。微妙にバグったので実装権を他の問題に譲ってプリントデバッグをすることにしました。

C

構築問題らしい?面倒な場合分けが生えているらしく大変そうでした。

Cの実装の途中にEのバグを発見したので1bitだけ修正させてもらいました。80分くらいにAC。

その後90分くらいにCも通った。この時点で5完5位とかだったので通過を確信。

F

幾何。TKOさんがすぐ必要十分条件を見つけて下さった。幾何はライブラリを持っているTKOさんに丸投げすることに(申し訳なさすぎる)

G

確率の問題。今年の確率論基礎の単位やばいな~とか考えていたらnaniwazuさんが爆速で式変形を完了させていた。それをみたらすぐにDPテーブルを思いついたので、それをnaniwazuさんに伝えたら一瞬でDP遷移がかかれた紙が返ってきた。チームプレー楽しい。

計算量が微妙に重そうなので僕がC++で書くことに。150分くらいに通る。

この時7位とかだったと思います。今まで競プロをやってきて一番嬉しかった瞬間。デカめの声を出していた気がする。

F

残りの時間は全員でFのデバッグをすることに。しかし、必要十分条件も正しく、ライブラリのコピペミスもなかったため、答えだけが間違っているという結論に至って終了。惜しくも通せず。

結果

最終的に6完で全体8位/学内1位という満足すぎる結果に。

10位以内に入れたことも、ギリギリで学内1位をとれていたこともめちゃくちゃ嬉しかったです。コンテスト後は打ち上げをしました。最高

感想

チーム戦楽しすぎるという気持ちに。問題配分が完全に噛み合っていて、全員が等しく強みを発揮できていたと思います。久々に競プロの楽しさを思い出せて最高でした。

あと横浜めちゃくちゃ楽しみです(いったことないので)

 

 

布教

www.youtube.com

聴いてくれると嬉しいです。

JOI2021本選参加記

高2のyuma220284です。人生最後のJOIで本選まで進めたので思い出話など

 

プロローグ

時はさかのぼること1年前...

f:id:yuma220284:20210215202445p:plain

JOI'20本選 敗退記 - ひゅ~Menの雑記帳 より

 初公開情報だと思いますが、本選落ちを確信して落ち込んだ挙句、競技終了後の食事でハンバーグを切ろうとしたらが真っ二つに割れてガン萎えしてました

その後精進量の少なさを指摘され、JOI過去問を埋めることにした

 

3月~6月

 学校が休校になり、無限に時間が出来たのでJOIを解き進めた

「この時期に一回埋めておくと、本選直前でもう一周できるな~」とか言ってた

この判断が後々大きく響いてくる

f:id:yuma220284:20210215210712p:plain

f:id:yuma220284:20210215210716p:plain

比較

7月~1月

高校2年の夏に入り、そろそろ受験勉強をしないといけないという話になり、PCを封印することに

この期間にARCが復活したので、続けていたら2200くらいにはなったのかなぁ 分からん

 

2月

JOIやるか~と思ったんですが、3月~6月に十分進めていたことと、JMOも通ったことを考慮して数オリ対策を重点的に進めることにした

結局直前までほぼ何もしていない

 

前日

ここにきてようやくACLの仕様を理解

 

1日目

帰宅してしばらくしたら開会式が始まった

自分の自己紹介動画が流れる やめてほしい

去年会った人がちょこちょこいて懐かしい気持ちに

 

そんなこんなでプラクティスへ

入出力が遅いことが発覚 みんな入力高速化のコードをコピペに行っていた

毒蛇とかPortFacilityとかの話をしてるといつの間にかパンケーキの話題になっていた

とりあえず「パンケーキはN<=13なので何しても通る」とか言って炎上することに成功

その後「Building4、解けない要素が無いだろ」「エスパーしたらエスパーする要素がなくなります」とか言って全方位を敵に回す

そんなことをしていたらプラクティスが終わりそうだったのでコピペして全完出来ることを確認

 

ラクティスが終わった後はAmongUsとかをしてちょっと遊んだ

いつもどおり早めに寝た 緊張して寝れないことはそんなにないので

FAKEなのでARCはスルー

 

本選競技直前

朝は6時ちょっと前に起きた 去年も5時台に目が覚めて月を眺めていた気がする(たしか満月)

めちゃくちゃ大きい地震があったらしく驚く みんな無事で良かった

 

本選競技

とりあえず1問目をみる 想定してたよりずっと非自明でびっくりした

10分で終了 A問題にしては結構難しかったと思う

2問目 データ構造かなぁと思うが、落ち着くと単調性が見える 20分

3問目 こういうのは詰まるとまずいんだよね 300+αで通過読みだったのでゆっくり解くことにする

最終的な配列の特徴は分かるので、どうDPに落とし込むかを考える

遷移ガチャをしてみた 3連目くらいで引き当てる

あとは添字をミスらないことを意識しつつ組む 2時間でAC

4問目と5問目をみる 部分点がどれも大きくてヤバそう

5問目の部分点が比較的小さいのでちょっと眺めてみると、明らかに沼な見た目をしていたので4問目に賭けることにした 334点でネタにもなるので

4問目、グラフなのでまあ拡張Dijkstraくらいだろうと思う 正解

結構分かりにくいコーナーが多かった印象

残り30分くらいの時点で2WAを出しながらなんとかAC

ここで勝ちを確信 4問目の部分点2を見るが実装がヤバそうだったので間に合わない

 

結果は100-100-100-34-0の334点

他の人を見てると結構300点以上が多くてビビる 怖すぎ

とりあえず通過圏内にいることを確認 安心した

 

本選競技後

解説会はなんか質素な感じだった気がする レジェンドは対面で会いたかったな

5問目、去年みたいにダイナミックな感じではなく、シンプルにめちゃくちゃ難しそうな印象だった AtCoderに類題があったらしい 精進しないとね

 

交流

oViceが面白すぎて感動

hir35さん、onsen_manjuuさん、Rho17さんと「みんなでぽんこつペイント」をする

これが結構楽しい

 二巡したので一旦解散することに AmongUsが開かれていたので入れてもらう(オンライン、輪の中に入りやすい)

なんやかんや経験者なのでちょっとだけ有利だな~とか思っていたら初動でキルされまくり 行動が沼

まあImposterもやったし、結果オーライ 

途中で何か声が聞こえてきたが、Discordでも話していたので、良く分からなかった

それがoViceからだと気付いたのは数十分後

f:id:yuma220284:20210215222743p:plain

この後はAmongUsしながらoViceで話すとかいう奇行をしていた おれは聖徳太子ではないが

Mitarushiさん、Mitsubachiさん、nullさんとの会話、かなり楽しかった印象 気さくに話せて良かった

一旦ご飯で抜けた後、夜にもうちょっとアマングやって寝た

翌朝起きた時にはもう現実世界にもどっていた

 

エピローグ

実は近畿のブロック賞も取れていたらしい ラッキー

交流会も悔いが残らないくらい楽しめたし満足です

こんな楽しい大会を用意してくださった情報オリンピック委員会に感謝

へやわけ in へやわけ

はじめに

yuma220284と申します

競技プログラミングをしています

ペンパ歴は1年です(パズスク登録したのは4か月前くらいです)

 

これはペンシルパズルI Advent Calendar 2020の7日目の記事です

 

参考

 bayさんのシンプルループ in スリザーリンク

puzsq.jp

 

概要

これで1ブロックとします

f:id:yuma220284:20201206175858p:plain

 これで白と黒が表せます

 

f:id:yuma220284:20201206182430p:plain
f:id:yuma220284:20201206182453p:plain

並べます

f:id:yuma220284:20201206183640p:plain


出来る事/出来ない事

隣接禁

 

f:id:yuma220284:20201206183945p:plain

出来る

 

分断禁(左が右に対応)

f:id:yuma220284:20201206184158p:plain
f:id:yuma220284:20201206184613p:plain


出来る

 

三連禁

f:id:yuma220284:20201206184442p:plain
f:id:yuma220284:20201206184551p:plain

出来ない

左右が白だという情報を持つ必要があり、これを解決するのが難しい

 

部屋の中の黒マスの数

f:id:yuma220284:20201206184812p:plain
f:id:yuma220284:20201206184830p:plain
f:id:yuma220284:20201206184922p:plain

出来る

 

角、辺

f:id:yuma220284:20201206185104p:plain
f:id:yuma220284:20201206185127p:plain

出来ない

 

使用例

これを

f:id:yuma220284:20201206191357p:plain


こうして

f:id:yuma220284:20201206191344p:plain

こう

f:id:yuma220284:20201206191454p:plain
f:id:yuma220284:20201206191513p:plain

 



これを

f:id:yuma220284:20201206190438p:plain

こうして

f:id:yuma220284:20201206190730p:plain

こう

f:id:yuma220284:20201206191116p:plain
f:id:yuma220284:20201206191138p:plain

 

おわりに

こうやってみるとへやわけってかなりシンプルなルールですね

三連禁が可能なへや、存在するのでしょうか

多項式乗算と高速フーリエ変換(FFT)

この記事は高校の部誌(非公開)に掲載したものです。

高速フーリエ変換を掘り下げる過程をまとめたものです。実装には触れていません。

高校数学と線形代数の基本を知っている方が対象です。

f:id:yuma220284:20201108180721p:plain