はるすえすしーのぶろぐ

ブログのないようがないよう

ICPC2023 Asia Yokohama Regional 参加記

チームTUTankhamunでICPC2023アジア地区予選に参加し、6完32位でした。去年も参加したはずなのに参加記がない。去年は3完33位だったらしいです。

解法に関してとか全くないので、その辺はほかのチームメンバーから出ると思います。 出ました。↓

note.com

国内予選

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

halss.hatenablog.com

チーム

チームメンバーはecasdqina, MATSUMAT, hals(ぼく)。色は黄色、水色、緑色。横浜までに水色なろうとしてたんですけど、間に合いませんでした。

戦略

エカスドくんがAB問題を解いている間にC問題以降を松くん・ぼくで翻訳してひたすら読む。

ABが解けたら多く解かれている問題 OR 簡単そうな問題の概要を説明して、エカスドくんに解いてもらう。

できるだけ誤読をなくして、サンプルを手元で動かしてみる。

~day0

特に練習とかはしていません。ABCとかには出ていました。

チーム紹介文と紹介スライドは去年と同じものを投げ、ホテルも去年と同じところを予約しました。

横浜大会のネタ記事などを書いていたら新幹線の指定席チケットが取れず、自由席になってしまいました。

halss.hatenablog.com

day1

8:50起床。荷造りが全然できていなかったので朝になって詰め込む。急ぎすぎてiPhoneの充電コード全部忘れてしまう。10:51発のひかりに乗って新横浜へ。曇っていて富士山は見えず。

13時すぎ産貿ホール到着。チーム名と大学名だけでregistrationを乗り切り、会場入り。Tシャツを着る、意外と暖かい。

チーム紹介ドキュメントを見たら、僕らとGoodbye2023以外みんな英語でした。

リハーサルはこれ見たことありますね~って言いながら一通りペナを試して全完。

じゃんけんに負けたため、今年もTeam Introduction担当に。ファラオの呪いに気を付けてくださいね~って言いました。

チーム紹介スライド

Luzhiledさんはうしさんではなく、うしさんと呼ばれているei1333さんとは別人であることを教えられてびっくりするなどしていました。

day1終了後はホテルに戻り、ホテル近くのとんかつ屋さんで2年連続カツを食べる。何とか食べきれたが脂が結構キツかった......。

カツ200g

21:00~ ABC330に出る。チームメンバーは寝てしまったのでぼく独りだけ参戦。1165→1192 (+27)。ICPC当日入水チャレンジ失敗。

ABC330

day2

あんまり眠れず、うとうとしているうちに7時起床。8:15ごろに産貿ホール内のドトールで朝食をとることで遅刻しないテク。

優雅な朝食

入場してすぐトイレへ。出てきたらめっちゃ行列出てきてびっくり。

本番

0:00 開始。問題の封筒を開けるときに松くん怪我する。
エカスドくんPCのセットアップ&A問題解き始める。A問題瞬殺ではなさそうだったのでB問題を松くん、C問題をぼくが読む。C問題は数え上げだけど制約ヤバそう。

0:15 A問題AC。松くんがB問題の概要を説明。ぼくと松くんで手分けして後の問題を読んでいく。

D問題を読む。バッカス記法書いてあるのがキモくて構文解析っぽく見えるけどやってることそんなに難しくなさそう。(というか文字列に対しての難しめの操作って全部構文解析っていうのかと思ってました...)
F問題を読む。市松模様の行・列を反転するクエリが与えられて、エリアの個数を答える。ABC-Eぐらいで出そうな気がするし、考えれば解けそうな気がするけどもっと簡単な問題があるかもしれないので翻訳を続ける。

0:57 ちょっと手間取ってたっぽいがB問題AC。この時点でDEFHのACが出ていて、F>D>E>Hの順。とりあえずFを伝える。set使えば行けそうらしい。

H問題を読み始めるが難しそうなのでいったん放棄。次に解くであろう(そして制約が緩くて割と簡単そうな)D問題を考える。圧縮してもしなくてもバッカス記法通るやん。松くんはG問題で確率 mod 998を手計算で復元していた。

1:35(+1) サンプル合ったのでF問題提出するも…OUTPUT-LIMIT。なんで!? デバッグ出力を消して、無事AC。次にACが多いD問題の概要を説明。実は区間DPでロリハさえいけるんですね~(ぼく「すげ~」)。

H問題読み終わったけどむずそう。どう頑張っても状態数崩壊する。
IJを読む予定だったが、インタラクティブだしそんなに難しくないはず!という直感で飛ばしてK問題を読み始める。結果的には正解だったかも。

2:21(+1) 2(5(a))ではなく10(a)と答えてしまうプログラムでWRONG-ANSWER。1文だけ修正して提出、無事AC。圧縮するときの処理をちゃんと伝えていなかったぼくの責任。

今度は松くんがE問題概要を伝えている間にお弁当食べる。ミニカツサンド×3+おにぎり×2でうれしい。

K問題の英語が、分からん!松くんも合流して二人で読む。途中でdiskをデスクだと読み間違え続けてたことが発覚、英語力さん……になる。

なんとなく100mごとに区切ってクエリ出して、最大の区間をさらに10mごとに区切って…をx,y軸どっちもやるやつでいけそうかも。これ合ってるならぼく天才すぎないか?って調子に乗る。→普通に違いました。

3:11(+2) サンプル合ったので提出したらTIMELIMIT。修正して提出したらOUTPUT-LIMIT(2回目)!? デバッグ出力を消して再提出して、AC。いったんお昼ご飯タイムしながら、K問題の説明と、思いついた解法の説明。行けそうだったので書き始めてもらうが、105を10000と勘違いしていたことが判明。数学力さん……になる。幅を変えたりして、どうにかやれないか試す。

3:50? とりあえずサンプルは合うコードが出来たので提出するも、WRONG-ANSWER。100 100 100とか50000 50000 50000とかいろいろ試すとだめなケースが見つかる。

~4:30 2回くらいコーナーケース見つかるたびに修正するもWRONG-ANSWER×2。テストケースが強すぎる!ということでランダムテストの方向性に。

4:54(+3) ケースが見つかったのでその入力を元にコードを慎重に見ていくとバグの原因を発見。修正して提出してようやくAC!この時点で6完!

5:00 もうG問題解くのは無理なので、Yes/No ファンクラブ提出をして終了。

コンテスト後

インタラクティブ問題にテスター用意してくださって本当にありがとうございました。すべてのインタラクティブでアレつけてください。

Yes/NoでK問題Yesできてよかったです。みんなYes多すぎない?Yes/No前31位で32位になってるんですけど!?

去年みたいに一人一袋ミスド貰えると思ってワクワクしてたのに一チーム一袋で泣いた。期待してたのに......。しかしビュッフェががっつりご飯でびっくり。立食で他のチームとわいわいするのオンサイトって感じが実感できてすごくよかった。スタッフの皆さんの努力のお陰です。

お世話になる某社さんにご挨拶しに行き、一通り企業さんのブースを回って、たっぷり飯を食べた。あんまりほかの競プロerとは喋れなかったけど、話しかけてくれた皆さんありがとうございました。一発ギャグとか用意すべきなんでしょうか。

終わりですよ~のアナウンスがあったのでホテルに戻る。疲れすぎてて全員ベッドに座り込んだり寝たりしていた。しばらく休息をとって輪講資料を作りながらスマブラの大会?を見たりしていた。ゲーム&ウォッチしか使ったことないからレベルが高すぎた。

2時半ぐらいに就寝。

day3

9時ごろに起床。別の新幹線に乗るチームメイトと別れ、10:51発の新幹線に乗るため10時過ぎに出発。豊橋サイゼリヤのハンバーグを食べ、大学に向かう。輪講をこなして、ICPC2023は終了。

おわりに

大学入って、このチームで2年間過ごせてよかったです。
普通に過ごしてたら得られない経験でした、お疲れさまでした!

競プロ欲の高まりを感じているので、勧められたJOI埋めとかで水色(青色は望みすぎ…?)を目指そうかと思います。

チームメンバー募集中です。興味ある弊大学の人は連絡ください!!!

あと卒論やばいです。HELP!

ありがとうございました。

追記

ICPC-replayを使ってグラフを再現しました。

icpc-replay