milkcoffeeのブログ

競技プログラミングなど

【コンテスト開催記】yukicoder contest 370

yukicoder で2度目となる単独コンテストを開催させていただきました。

yukicoder contest 370


 

参加してくださった方、ありがとうございました!

 

コンテスト開催にあたって

前回の単独コン を開催したときから既に作問のストックがあって、それらを消費しよう!というモチベで2回目の単独コンを開くことになりました。そう思って問題セットを組んでみると色々納得が行かない部分があって、結局は当初出そうと思っていた問題は3つしか残らず、他は新しい問題を作って出すことになりました。問題セットを考えるのはこだわりだすと止まらない(楽しい)。

自分の作問の理想は ARC みたいな問題を作ることで、典型力や実装力よりも考察力・エスパー力を問うような問題を作りたいと思っています。その考えは今回のコンテストも同じで、ARCっぽい問題を作ろうと頑張りました。いかがだったでしょうか?

テスターはTwitterで募集して応じてくれた方や知り合いの方に頼みました。p-adic さん、遭難者さん、かぽかぽさん、first さん、hamamu さん、nok0 さん、ありがとうございました!

各問題へのコメント

どういう経緯で作ったかなどを書いています。解法への言及もあります。

A問題:Triangle

シンプルで簡単でインパクトがある問題を作りたくて考えました。

Bが与えられなくても解けるというところがインパクトがあるかなと思ってこの設定にしました。

B問題:Enumeratest

この問題はかなり前から(前回の単独コンテストより前から)温めていました。

問題設定から考えたんですが、なかなか良い問題文が思いつかなくてしばらく出していませんでしたが、良い感じに文章を書けたので出すことにしました。

想定解を考えたときはエスパーで解きましたが、証明もスッキリしていて良い感じです。

C問題:Segment Zero

解法から考えました。

「実は答えが○○」みたいな問題が作りたくて考えました。

 

D問題:Only One Bracket

この問題も結構前から温めていました。

問題設定から考えました。

解法を考えるときは、とあるABCのカッコ列を構成できるか判定する問題を参考にしました。

Tester解が賢すぎる・・・と思ったけどそちらの方が解いている人が多そう。

 

E問題:MM

この問題も原案は前から温めていました。

解法から考えました。M = 11 の場合を考えると、10進数における11の倍数判定が利用できるため、考えやすくなります。この倍数判定と数列への操作を組み合わせようと思って問題を作りました。

最初は数列ではなく文字列で、各文字がA~Dのものでした。

しかし、Testerさんが想定外の解法をされたので、現在の設定に変わっています。

 

F問題:Segment +-

問題設定から考えました。はじめは1,-1ではなく(,) の2つであって、反転させて括弧列を作る最小の操作回数を求める問題でしたが、難しかったので変えました。

問題設定を考えて愚直解を書いてみると、実は答えが小さくなることが発見できたので、それから解法や証明を考えました。

 

G問題:2 Pows

問題設定から考えました。初めは1つの整数Nについて、和がNのになる場合の最小コストを求める問題でしたが、嘘貪欲とかが通りそうに思ったので少し複雑にしました。

想定解を考えるときに某有名なABCの橙Diffの問題の解法を参考にしました。

考察ステップが多くて自分にとっては今まで作った問題の中で一番難しいと思っています。

最後に

高難度を作れないのが懸念だったんですが、後ろの問題は苦戦された方が多かったみたいで嬉しかったです。その分、難易度の崖ができてしまったのがちょっと残念でしたね・・・。完璧な傾斜のコンテストを作るのは難しいと改めて実感します。

現在、めっちゃ出したい作問ストックはそんなに多くないので、単独コンテストはしばらくやらないかもしれません(作問が沸いてきたらまたやります)。

また、自分は TUPC (東北大学の競プロサークルが開催するコンテスト) の作問も担当しているので、そちらも是非参加してください!開催時期は未定ですが近いうちにやると思います!!

 

milkcoffee が作問した他の問題も是非見ていってください↓

milkcoffee 作問リスト - Google スプレッドシート

 

記事は以上になります。ありがとうございました。