第6回 ドワンゴからの挑戦状 予選
第6回 ドワンゴからの挑戦状 予選に参加しました!
解けた問題だけ解説をしていきますー
要項
第6回 ドワンゴからの挑戦状 予選
rated ~2799
2020/1/11(土) 20:00 ~ 22:00 (120分)
200-600(400)-800-800-1100 (5問)
ペナルティ: 5分
方針
Bに関してはどうせをに高速化する何らかの方法が出るとは思うので累積和高速化系か何か……まぁなんであれ数式変形だと思うから、一瞬考えて高速化が思いつかなかったら部分点も検討したいね。
後はCとDをとにかく両方読んで、解けそうな方に全力を使いたいね。
特に構築とかの私が得意な問題なら解きたいところ…….。
A - Falling Asleep
問題文
ニワンゴ君は曲からなるプレイリストを作りました。番目の曲はタイトルがで、再生時間が秒です。ここで、が相異なることが保証されます。
ニワンゴ君はこのプレイリストを再生しながら、作業をしていました。(すなわち、プレイリストの全曲が順番通りに回ずつ、間に休止を挟むことなく再生されました。)しかし、作業中に居眠りをしてしまい、全曲の再生が終わったあとに起きました。記録から、タイトルがの曲の再生が終わるタイミングでニワンゴ君が寝てしまったことがわかりました。
ニワンゴ君が寝ている間に曲が再生された時間が何秒あったかを求めてください。制約
- は英小文字のみからなる長さ以上以下の文字列
- は相異なる
- なる整数が存在する
- は整数
解法
まず今寝ているかどうかのフラグと寝ている間の再生時間の合計を持つ変数を持ち、最初はそのフラグをfalse、再生時間を0にします。
後は上から順に曲を見ていき、もしフラグがtrueなら再生時間にこの曲の時間を足し、次にもしもならフラグをtrueにすればいいです。
この順に処理をすることで正しく再生時間を求めることができますね。(逆にすると余計な時間が足されるので注意しましょう。)
感想
ニコニコ動画だなーって感じです。
去年あたりからかなりニコニコ動画の環境は改善されているので、人が戻ってまた盛り上がる環境になってほしいなとは思っています。
youtubeだと、コメントが流れないのが寂しい……。
B - Fusing Slimes
問題文
数直線上に匹のスライムが並んでいます。左から番目のスライムは位置にいます。
ここで、が成立することが保証されます。
ニワンゴ君は操作を回行います。回目の操作は以下の手順からなります。
- 以上以下の整数を等確率で選ぶ(これをとする)
- 左から番目にいるスライムを右隣にいるスライムの位置まで移動させる
- その後、同じ位置にいる匹のスライムを合体させ、匹のスライムにする
回の操作によって、スライムが移動した距離の総和の期待値にをかけた値(これは整数になることが示せます)をで割ったあまりを求めてください。なお、合体後のスライムが移動した場合は体のスライムの移動として数えます。
制約
- は整数
解法
まず、スライムは他のスライムの位置まで移動したときに消滅すると言い換えても問題はありません。
次に、スライムの間の区間について着目します。
区間を番目のスライムと番目のスライムの間の区間としたとき、この区間を通るスライムの数の期待値が分かれば、移動距離の期待値はその値に区間の長さを掛けたものに等しくなります。
まず、スライムは必ず区間を通るので、期待値はです。
次にスライムは自身が最後に移動するときのみ区間を通るので、期待値はです。
同様に考えると、スライム自身が最後に移動するときのみ区間を通るので、期待値はです。
よって、区間を通るスライムの数の期待値はであることが分かったので、移動距離の期待値はであることが分かります。
はの前計算をしておけばで求められるので、計算量はです。
感想
癒し枠です。
600点問題なので難しいと思っていたのですが、考察5分、実装5分で終わったので平和で良かったです。
C - Cookie Distribution
問題文
人の子供たちがいます。子供たちにはと番号が振られています。これから日間、子供たちにクッキーが配られることになりました。日目には人の中から人の子供が等確率で選ばれ、選ばれた子供たちはそれぞれクッキーを枚受け取ります。(回の子供の選択はすべて独立に行われます。)
日間で子供が受け取るクッキーの枚数をとして、子供たちのうれしさをで定義します。うれしさの期待値にをかけた値(これは整数となることが示せます)をで割ったあまりを求めてください。注記
は異なる個の対象から個を選ぶ選び方の総数を表します。制約
解法
D問題に全力を尽くしたので解いていません。
感想
期待値典型っぽい?なんか改めて書いたところでこれ自明DPじゃんって気持ちになってる
D - Arrangement
問題文
ニワンゴ君は枚のカードを持っています。カードにはと番号が振られています。ニワンゴ君はこれらのカードを一列に並べることにしました。
ニワンゴ君は以下の個の条件の全てを満たすカードの並べ方が存在するかどうかを知りたいです。ニワンゴ君のためにそのような並べ方が存在するかどうかを判定し、存在する場合は辞書順最小の並べ方を求めてください。
- カードの右隣のカードは(存在するならば)でない
- カードの右隣のカードは(存在するならば)でない
- カードの右隣のカードは(存在するならば)でない
制約
解法
現在、まだACできていないため保留です。
この後で解くのでちょっと待っていてください……。
一応説明しておくと、残っているカードが枚を除きすべて残っているカードを指している場合、そのカードを取らないと詰みます。
逆にそうでなく、かつ残りが枚以上ならば選べる中で最も小さいカードを左に置くのが最適です。
これを繰り返せば残りは枚以下になるので、ここから取り方を考えるのはなんとかなるでしょう。
……のはずなのですが、自分の解法だとこの枚以下になってからの取り方を間違えてるっぽい……。
全探索が苦手過ぎて辛い。
感想
解きたかった、なんでACできなかったのだろう?
E - Span Covering
問題文
ニワンゴ君は半開区間で表される土地を購入しました。
ニワンゴ君はこの土地に枚のシートを敷くことにしました。シートにはと番号が振られており、これらは区別されます。シートは、を満たす整数を選んでを覆うように敷くことができます。
にシートに覆われていない座標が存在しないようなシートの敷き方の総数をで割ったあまりを求めてください。ただし、つの敷き方が異なるとは、整数であって、シートが覆っている領域が異なるものが存在することを指します。制約
- 入力中の値はすべて整数
解法
読んでないので……。
結果
oo-x- 2完(800点) 2:33-12:55-xx:xx-xx:xx(10WA)-xx:xx / 12:55
129位 パフォーマンス: 2384
レート: 2001→ 2045(+44 highest!)
感想
えー、Dは完璧に考察があっていただけに悔しいなぁ。
最後に小さなケースを自分で場合分けするのではなく、コンピュータに全探索して解かせるという発想にならなかったのは本当に反省。
実行時間に大きな影響を与えない部分なら適度にサボるのも大事、本当に大切なことね。