RUPC2024開催記


2024年3/23~24 の2日間にかけて、立命館大学競技プログラミング合宿(以降、RUPC2024)を開催しました。RiPProとしては、5年ぶりのイベントでした。土壇場で開催を決めたり、準備が大変だったりしましたが、何とか2日間を終えることができました。殴り書きなので読みにくい部分もあるかもしれませんが、どうかお付き合いください。

この記事では、時系列順の出来事と、出題した問題に関するちょっとした感想を書いています(すなわちネタバレ注意です)。問題の解説に関しては、問題IDが公開され次第もう少し詳しく行いたいと思っています。

2023年秋頃

RUPCをいい加減再開してみたいなという意見がちらほら出始める。まだ時期は決めていない。

とりあえず、問題の原案をいくつか出す。また、共同開催した会津大学には、この辺りで声をかけた(はず。他団体にも声をかけたっぽいが、いかんせんこの時は団員の本気度が足りず、情報伝達がうまくできていなかったため、真偽は定かではない。)

2024年1月

OUPCにて、OBと会う。「RUPCを再開したいんすよねぇ」的な話をした。2024年度からキャンパス移転をすることもあり、いろいろあって今年度中に開催した方がいいんじゃないか的なオチに終わる。

並行して原案を出さない団員には、イベントの準備を頑張ってもらうことにした(先例を知らない中、頑張ってくれた後輩には感謝です。)

2024年2月

ギリギリになってしまったが、OBにテスターの依頼をすると、快諾してくださった。この時は、一緒に原案を出してくれた団員との相談で、全体テスターをしてもらうことにしていたが、これがマズい結果を引き起こすことに。

出題する問題のほとんどは、この段階で出そろっていたと思う。RimeやNotionを使ってテストケースを作る準備や、問題文の校正を始めた。が、一部の問題は文章が決まり切らなかったり、破綻してるケースについての考慮が終わらなかったりしていた。

2024年3月

全体テスターをしてもらうようお願いしていたものの、いい加減間に合わない気がしてきたため、独断で個別テスターをしてもらう方針に変更(最初からそうすればよかったと後悔しています)。ボロボロと問題点が出てきたので、TUPC含むコンペを除いて、ほぼすべての時間をRUPCの問題作成に費やしたと思う。

準備の悪さにしては、本番で全然Clarが飛ばなかったり、リジャッジが無かったりしたのはよく頑張ったと思う。どれくらい悪かったかに関しては、いつか書き足すかもしれませんし、書き足さないかもしれません(「OUPCやTUPCの準備が優秀過ぎて、参加するたびに度肝をぬかれていました。」とだけは言っておきます。)

day0

問題文の校正作業をひたすらしていました。htmlにエンコードするのにも苦労していました。会場内で一般参加者がwi-fiを繋ぐ手立てがないことが発覚し、妥協策として、部員のパソコンをフルに活用して、モバイルホットスポットを提供することにしました(アクセスがうまくいかなかった人、申し訳ありませんでした)。

day1 コンテスト前

この日は立命館セットでした。自分が作った問題がいろんな人に解かれるワクワクがある一方、問題の不備の発覚にひたすら怯えていました。

オンサイトには40人弱の方が参加してくれました。開会の言葉を軽く述べつつ、チーム分けを行いました。今回は特にレギュレーションを設けなかったのですが、OBの「レート順にとりあえず並んでもらうと良い」という助言のおかげで、スムーズにチーム分けができたと思っています。

day1 立命館セット

一番後ろの席を運営席として、原案を出した僕とnwo君で、ひたすらclar対応をしていました。コンテストの開催は初めてだったので、clar対応もだいぶ苦労しました。

全体としては、セットが完成した当初は「暖色チームであれば1時間30分~2時間で全完されるんじゃないか」と考えていました。今思えば、前もってもっと準備ができれば、もう少しボリューミーなセットにできたんじゃないかと思うのですが、いかんせん準備時間を全然設けなかったもんで…(ここは本当に反省しています)。ただ、予想通り、1位のチームが1時間37分で全完してくれました。全部の問題がコンテスト中に解かれるのは非常にうれしいです。次回は「だれにも解かれていない問題がない」かつ「全完がいない」セットを目指したいですね。

各問題の感想について軽く述べます。

A Empire of the BIWAKO

nwo君が持ってきた問題。「簡単めかつ滋賀っぽい問題」を出そうと考えてたところ出てきた。

B Goodbye, BKC

nwo君が原案。当初「range pair xor query」にしようとしてたのだが、あまりにもABC308Gと解法も問題名も似すぎていたので、問題名の改訂をお願いした。そしたら、ちらし寿司スタイルになって返ってきた(会場がウケてたか冷えてたかが、団員の中で分かれてるのはまた別のお話…)。

また実行速度の遅い言語に配慮をし過ぎた結果、O(NQ)が通るような制約になってしまいました。pythonで提出すると、AOJでは強制的にTLが伸びるという話を後で知ったので、この配慮はいらなかったかもとも思っています。

C Belt-line Bus Trip

僕が原案。よくある簡単グラフ問です。「環状」の説明が甘く、clarをいくつかもらう羽目になりました。「入力例と図があるのに、なんで怒られるんだ?」となっていたのですが、図を貼り忘れていたことにコンテスト後に気づきました。気づかなかったのは大変申し訳なかったです。

D 2xL Minesweeper

nwo君が原案。当初「?」マスが無かったのですが、これだと高々2通りしかないことが、OBからの指摘で発覚。問題作成陣が少ないと、こういうのなかなか気づかんよな…

E palindromic?

僕が原案。ギャグ問でバッシングを受けるかと思いや、すんなり受け入れてくださったのがびっくり(あと、ギャグ度で言えばDay2にとんでもねぇ問題があったので、参加者の記憶からは無くなってしまったのかな)。素数砂漠について言及しないタイプの解法を作りたかったんだけど、解説後にそれも微妙に破綻していることが発覚。とはいえ、高度合成数みたいな、あらかじめ解析をした結果を基に計算量を見積る問題もあるにはあるので、気にするほどでもないかなーという感じです。

F MOD Party

僕が原案。テスターと相談している際に、没になった問題の代替として出題しました。次回以降の開催のために取っておこうと思っていたのですが、今回出題する運びになったというわけです。「区間任意mod」と言われてみると結構身構えてしまいますが、数の変化の性質を追ってみると、ただのRMQでそれができてしまうという、なかなかの自信作です。

G Skating

僕が原案。実は、 A,Cに次ぐ難易度の問題だと思っていたのですが、結果は難しい方から数えて2番目でした。板の使い方について考えてみると、案外使い道がないんですよね。当初は板ではなく石にする予定だったのですが、自分が考慮していないケースがあったため、板に変更するという経緯がありました。

H miNIMum

僕が原案。この話は散々こすろうと思うのですが、2週間前に参加したTUPCにて、「Min NIM」という名前の問題が出て大焦りしました。内容まではかぶらなかったのでセーフ。逆系と普通のNimが同時に出る、なかなかオシャレな問題ができたと思っています。コンテスト後のtwitterでは好評だったのでうれしかったですね。

I Jucumber

僕が原案。ひっどい幾何になってすいませんでした。実装が重い系の問題を出しておきたかったのですが、案の定重すぎるものになってしまいました。幾何の問題はなかなか見たことがなかったので、配慮すべき部分を配慮しきれず、オンサイトでACしたチームには要らない考察(超ギリギリで交差しないケースとかの判定など)をさせてしまったようで、ご迷惑をおかけしました…

問題についてはこのくらいにしておきます。

コンテストと並行して、団員には引っ越しの準備をしてもらうことになっていました。立命館大学情報理工学部は、来年度から大阪にうつります。そのため、我々RiPProのサークルブースの引っ越しもしなければなりません。RUPCとは違い、こちらは日程通りにうまくいっていたので、最後の仕上げをするだけで済みました。

day1 コンテスト後

撤収作業をした後に、会津大生などを含む集団でびわこ・くさつキャンパス周辺のラーメン屋に分かれて入店。僕が行った麺ismは、会津大生の食いつきはあまりよくなかった(のかな?ていうか長旅の後に油って入らないよな…でもそんな感じの店しか紹介できないのが南草津なので…すいません)。prdさん、pitPさんと、RiPProのメンツあわせて6人でのご飯になった。

麺ism。あのキャンパス周辺で個人的に一番好きな店です。

大学の宿泊施設に戻り、シャワーに入る。会津大生とももっとしゃべりたかったのだが、連日徹夜で立命館セットを準備していたので、すぐに爆睡してしまった…

day2 コンテスト前

キャンパスのそばの喫茶店で、会津大生と朝食をとる。いろいろ話せてよかった(と思っているが、自分からしゃべり過ぎちゃう悪い癖が抑えられてたかは正直覚えてないですね…まずかったかも)

珈琲屋らんぷ。下宿時に立ち寄らなかったので実は初入店。
</figure

いつの間にか受付の時間になっていたので、急いで準備に回る。当日の司会進行は会津大のあべし君中心に回してくれることになったので、心置きなく自分は競技に参加できた。

day2 会津セット

besukohuさんと、前日にご飯を食べたpitPさんと組んだ(prdさんとはTUPCで組んだばかりだったので、組みませんでした)。

E問題に散々時間をかけてしまい、非常に申し訳ないことをしてしまった。バグを見つけて通してくれたbesukohuさんに感謝です。途中、B問題の解法が飛んできたので、自分が実装することになり、AC。競技中にできたことは本当にそれくらいで、力に慣れず、悔しい思いをした。チーム戦に慣れないこともあり、結構な時間一人競技をしてしまったのが反省点です。オンサイト外でもチーム練をさっさとやりましょうね。

day2 後

無事に、コンテスト2日程を終わらせることができた。コンテスト後は、いろんな人と話せた。解散後は、RiPProのメンツでキャンパスのそばのガストに入った。イベント中はお祭りテンションで乗り切っていたが、見知った顔だけになると、スイッチが切れてしまった。本当に記憶がない。

終わりに

実は、外部の競プロerをあまり知らない団員に対して、競技プログラマーの生態がどのようなものなのかを知ってもらうために開催を強行したという節もありました。開催前はABCにすら出ない団員も多く、また、RiPProの中で一番強いのが残念ながら水青反復レベルの私であり、「競技プログラミングってもっと熱意持って楽しめるコンテンツなんだぞ」というのをどうにか伝えられないかと苦心していたのです。RUPC2024を開催したことによって、団員の意欲も高まった感じがして、結果的には成功に終わったかなと思っています。

次回はもっと(問題セットも運営面も)クオリティを上げますので、参加してくださるとありがたいです。