9/14〜9/16 に HUPC2020 が開催され、9/14 は 北大セット でした。元々は RUPC2020 の北大セットとして出す予定だったので自分もまだ作問に携わっていて、今回で大学合宿の作問は卒業ということになりました。思い返してみれば、RUPC2017 からセット提供するごとに毎回作問しているのでなんだかんだ 3 年半くらい関わったことになります (しかも HUPC 主催で作問機会を自ら増やしているという・・・)。そう考えるとなんとなく結構やったのかもという気持ちになりますね。
今回もセットを作るにあたって相当いろいろやったので、振り返ってみます (なんかこういうのやりたくなっちゃうんですよね、半分ポエムだけど許してください)
問題セットについて
各問題について
A 問題
原案出しました。たしかアパホテルかどっかのサイトをみてて思いついた気がする。当初はオンサイトでやる予定だったからこういう設定にしたんですが、オンラインになってしまったのでなんか微妙。
B 問題
原案 TAB 君です。合宿前に解法に関連しそうな記事とかなんとかいっぱい出ていて、被ってるなぁとなっていましたが簡単枠だし特に気にせず出しました。AC 数はもう少し A と傾斜つけたかった感ありますが、ほぼ全員解いてましたね。(参加者レベルすごい)
C 問題
原案 monkukui 君でタイトルは自分がつけました (いいとこ取り)。出力検証器が AOJ テストで一発で動いててすごかった、これで安心して世代交代できますね・・・
D 問題
原案 TAB 君です。最初は直線の情報を具体的に求めて出力する感じの設定でしたが、誤差で訳わからなくなりそうだったので 複数テストケース + 判定問題 という設定を自分が提案してそのまま反映されました。斬新な設定変更もときには大事。データセット担当は自分だったのですが、double 型で計算すると落ちるようにケースを作りました (そのはず)。
E 問題
原案 tsukasa さんです。最初は距離が K 以内ならワープできるみたいな制約が存在せず、隣り合ってれば移動できるというだけだったので実質的に不要な辺が大量に存在する設定になっていました。これだとさすがにアレなので、距離が K 以内ならどうこうみたいな設定を自分が提案して足しました。実は作問チーム内でも、多かった誤答のひとつ*1を解法として出す人がいたので、それを落とすケースがちゃんと入っています (チームで確認するの大事ですね)
F 問題
原案 monkukui 君です。最初は 3 乗くらいが想定で辺コストがなくて数えるだけの設定だったのですが、自分が 2 日くらい考えた結果線形になってコストありになりました (問題設定変えがち、実質入力定数個数え上げだけどカモフラージュした)。最終的には AtCoder にありそうみたいな問題になりました。好評そうだったのでよかったです。
G 問題
原案出しました。これ を upsolve するときにけっこう感動して、エッセンス抽出してなんか作れないかなと思って作ったギャグです。最近導入された AOJ の C++17 が速すぎたせいで TL がかなりきつくなってしまいました。正直どうしようもなかったのですいません・・・ (もうこの手のオーダー区別無理じゃないか?という感想になりました、どうするのがいいんだろう)
最初テストケースを適当に作りすぎて、ランレングス圧縮したら通るみたいなケースになっていたので調整したり、愚直が通っちゃうので調整したりなどをしていました。(AOJ 上だと結局愚直はギリギリだったんですが)
H 問題
RUPC の時点で出そうと思ってましたがなかなか原案がまとまらなくて、ダラダラ作って最終的に形になったのは 8 月でした・・・。作るにあたっていろいろ苦労したので感想お待ちしています。
yosupo judge の minimum cost b-flow から適当に拝借して自分のコードと結果を突き合わせたり、ケース考えたりなどいろいろやりました。あと rsk0315 君が自分の解法を Java に移植してくれたので感謝。
全体を通して
全問題解かれましたが全完はいませんでした。また、AC 数を見るにちゃんと「難易度順」になってそうでよかったです。
原案を出した他に、DEF の設定をだいぶいじってしまいましたが、エゴサした限りだとコンテスタントから不自然さはなさそうだったので良かったかなと思います。
あとこれは完全に舞台裏の話になりますが BitBucket を使うのをやめて GitHub に移行してみました。 Issue とかが見やすくなったし、CI も外部サービスに依存しなくて済むし、こっちのほうが好きかなぁという感じがしました。
作問について
自分が初めて作問をしたのは RUPC2017 A 問題 でした。はじめは作問に不慣れで、A 問題 (先述のリンク先) の問題文が読みにくいという指摘をいくつかいただきまして、問題文は気をつけないといけないなぁとなりました。未定義用語を使わないようにしなければならないとか、数式の書き方 (そもそも TeX に慣れる) とか、気をつけることは挙げるとしたらキリがありませんが、問題文校正を経て徐々に感覚が身についたのかなぁという感じはします。
終わってみればそれなりに原案を投げて出題されたかもしれません。自分原案で出題された問題一覧は tsutaj 問題一覧 としてまとめてあります。
Rime や Git の使い方や、リアクティブジャッジ・出力検証器の作り方、Python や Java の書き方とかも全部合宿の作問で学んだので、大学合宿で得たものはたくさんありました。機会に恵まれて感謝です。
ACPC2020 も出てね (宣伝)
話は変わりますが 9/19 〜 21 で ACPC2020 が開催されています!
さて、自分はもうすでに作問陣から退きましたが 9/21 13:00〜 に後輩が作った北大セットが出題されるようです。解いてみてくださいね。URL は直前になれば AOJ Arena に掲載されると思います。
*1:二部グラフに塗って少ない方を出すやつ