milkcoffeeのブログ

競技プログラミングなど

TUPC2022 参加 & 開催記

東北大学プログラミングコンテスト (TUPC2022) が AtCoder 上で開催された。

東北大の競プロサークル「puzzleknot」が主催で、自分もその一員としてwriter & 運営の手伝いをした。

atcoder.jp

 

初のAtCoder 上でのコンテスト & 初のオンサイトということで、普段と違う思い入れがあっため、準備から開催までを振り返る。

 

TUPC2022 開催決定

競プロサークルの長、sotanishy君が「今年もTUPCやりましょう」と発言したのがきっかけ。

前回の TUPC2021 は AOJ を借りてやったが、「ワンチャン AtCoder を借りれないか?」という話になる。

AtCoder 側にお願いしてみたら「kotatsugameさんが居るなら問題ありません。」ということで、AtCoder 上での開催が決定。激アツ。

さらに「オンサイトでやれたら楽しいね」という話になる。正直オンサイトのために仙台に人が集まるか不安だったが、Twitterでアンケートとったら30人くらいが「行きたい」に投票したので、それを信じてオンサイト開催することに。大学が協力的だったので、会場はキャンパス内の教室を使えることになった。

問題準備

自分はもともと作問が好きで、いつか AtCoder 上に自分の問題を載せたいと思っていたので、思わぬ形で願いが叶うことになった。

せっかく AtCoder に自分の問題が載るのだから、とっておきの問題を出したい。それに、前回は 1 問しか出せなかったので、今年はたくさん出したい。

他の3人の方がレートが高いので難しい枠は任せて、低〜中難易度のパズルっぽい問題を担当しようと思ってた。作問ストック (yukicoder で出す予定だったものとか) からお気に入りのやつをいくつか提案した。

普段から作問をしていたので、TUPC 用に問題を作るという感じでは無かったが、唯一、インタラクティブを入れたかったので頑張ってTUPC用に1問作った。

writer 陣はレート黄色前後の4人しかいないが、問題数はすぐに足りた。なんなら結構余った。

 

各問題について

他の問題については各 writer がそれぞれコメントしてると思うので、自分が writer をした問題についてのみ書く。

A: Sum Sort

設定から作った。条件がシンプルな感じになった。

設定は この問題 から着想を得て思いついた。

C: Flip Grid

解法から考えた。

「1箇所マスを選んで色を反転させる」というのに対して二次元累積XOR を考えると、長方形区間の色の反転になる。この問題ではそれを逆に考えれば良い。

解法は この問題 から着想を得た。操作の種類は違うが、二次元にして言い換えを逆にすれば今回の問題になる(と思う)。

わりとお気に入りの問題。採用された問題の中では最初に提案したやつ。

E: 00-11 Rotation

設定から作った。

「011 <-> 110」が 0 の偶数移動という性質を最初に見つけた。この操作だけだと 0 を追い越せないが、「100 <-> 001」が 0 を追い越すように見えれば解ける。

自分はこの手の「操作言い換え最適化問題」が大好きで、今までも似たような問題をいくつか作っている。その中でもこの問題は特にお気に入り。

オンサイトに来てくれた何人かの仲の良い人から「問題見た瞬間にmilkcoffeeのだと思った」という声をいただいた。作問の特徴を理解してくれる人がいると嬉しいし、やりがいを感じる。

最初はゆきこで以下のような問題を出すつもりだった。これを難しくしようと操作の種類を増やしたら今回の問題になった。

これだと多分緑Diff くらい。

 

L: Inversion High and Low

インタラクティブの問題を出したくて準備期間に頑張って作った問題。

解法を先に考えて、それを活かすように (testerの協力のもと) 頑張って問題設定を変えたり、制約を調整したりした。

Rotation と転倒数の増減に良い感じの関係があり、それを見つけるのが難しい。

本番中は1人にしか解かれなかった (その一人も想定解ではなかった)。

全問題で一番ACが少ない問題となった。インタラクティブ & 実装重い というところで敬遠されていそうで悲しい。後からでもぜひぜひ解いてください。

E 問題は、設定が「Rotation」解法が「転倒数」

L 問題は、設定が「転倒数」解法が「Rotation」

になったのが我ながらスゲーとなった (sotanishy君に言われて気づいた) 。

 

オンサイト本番

オンサイト会場で自分は司会をやった。

競プロ界の有名人がたくさんいる場で話すのは緊張したが、楽しめた。

コンテスト中は順位表眺めてニコニコしていたり、知り合いを応援したり。

仲良い人が自分の問題を通しているのを見るとテンション上がりますね。

終わった後の懇親会でも色々な人と話せて楽しかった。

問題面白いというお話をいただくたびに嬉しくなっていた。

不備も無く、無事にコンテストが終わって安心。

 

最後に

またこのメンバーで作問したいね!というわけで、おそらく来年もTUPCやります。

作問を褒められて自分は AtCoder で ARC を書きたい気持ちが高まりました。

橙になれるように(まずは黄色に戻るところから)頑張ります。

 

今回から常体をメインに書きました。気に入ったので次回からもそうするかも。