yukicoder contest 247 writer感想
yukicoder contest 247のwriterのstoqです。初めての作問なので至らない点もあったと思いますが、全体的にいい感じにできた気がします。
コンテストリンク:
https://yukicoder.me/contests/262
注意したこと
・assertで制約外のテストケースがないか確認する。
・問題文のサンプルと実際のサンプルが一致しているかを確認する。
・C++以外お断りコンテストにならないように実行時間に余裕を持たせる。
・コーナーケースがある場合は全て入れる。
・解説を省略しすぎない。
・難易度を低く見積もりすぎない。(低いよりは高い方がいいので)
問題ごとの講評
各問題についても色々書き留めておきます。
!注意!解法のネタバレを含みます。
A. Fruit Rush
tester: fukafukataniさん
First AC: Taprisちゃんさん
一問目なので簡単めにしました。ソートができるかどうかと が全て負のコーナーケースに気付けるかが本質です。選ぶ果物の個数を0個以上にするか一瞬迷いましたが、無はミックスジュースではないのでやめました。
B. Zero (Novice)
tester: trineutronさん
First AC: uwiさん
ギャグ枠です。愚直を投げると、なんと!……通る(は?)
書いた後で愚直が通るのに気付きましたが、テストケース作っちゃったしまあいいかということで出題。ちなみに32bit整数の愚直は で落ちます。(trineutronさん指摘ありがとうございます)
C. Zero (Advanced)
tester: tran0826さん
First AC: heno_codeさん
ある連続する区間の数を何個か選んで足し合わせた数の取りうる値の範囲は、1つの連続した区間となります。これはよく出題される事実なので覚えましょう。
modはその都度取っても最後に一気に取っても変わらないので、区間に の倍数があればYes、そうでなければNoです。
D. Zero (Exhaust)
tester: tran0826さん
First AC: heno_codeさん
CとDの難易度差が大きい気がしたのでちょっと反省。
上では割り算ができることを踏まえると、遷移の対称性が見えてきます。
DとEと統合して にするか迷いましたが、そうすると行列累乗なしで手計算またはWolframAlphaで解けてしまうのでやめました。
E. Zero (Maximum)
tester: tran0826さん
First AC: maspyさん
行列累乗の典型題があんまりない気がしたので作ってみました。verify用にどうぞ。
行列累乗やるだけなのでDより簡単だったかも?
あと問題名の括弧内は某大人気音楽ゲームの難易度から取っています。早く自粛から解放されて音ゲーしたい......
F. PQ Permutation
tester: kakiraちゃん
First AC: LayCurseさん(優勝おめでとうございます!)
場合分けが100個あるタイプの実装問です。基本知識は貪欲と累積和くらいしかないので、場合分けをしっかりできるかどうかが鍵となります。僕は最初嘘二分探索を書きました。
最後の面倒な構成パート(解説の後半、(II)の最後)は、次図のように実装すると簡単に書けます。( の例)
std::rotateは一番好きなstdです。
余談ですが、この問題は寝てるときに夢の中のARCで出題されていた問題です。起きて解いたらなんか良さげな感じだったのでパクって出題。夢の中のARC、すまん!w
追記:テストケースが滅茶苦茶弱かったみたいなのでリジャッジを行いました。お手数をおかけしました。テストケース作成って難しいですね……
難易度も一旦★3.5に下げたんですけどAC状況を見て★4に戻しました。
感想
参加してくださった皆さん、及びtesterの方々、ありがとうございました。
作問の楽しさに気付いてしまったのでまた出題したいですね。