1-indexedで書いてるからね
言い換え
期待値大嫌いなので問題から期待値要素を消そうね
これは典型なので天才部分ではないです
ある程度強い人は自明パートなので飛ばして
離散事象の期待値は、重複を許して事象を全部等確率のものとして列挙した時に、と言えることが多い(総和ってのは今回でいうとスライムの移動距離の合計のこと)(なんかそもそも期待値をこっちの定義で覚えてる人もいそう)
で、今回はこの分母が体のスライムを選ぶ順番の通りなのでなんですが、この問題では優しいことに最後にをかけるので、求めたいのは分子そのもの
つまり、起こりうる事象通りそれぞれでのスライムの移動距離の総和を求めればいいです
こういう風に期待値の問題を全事象の総和を求める問題に言い換えるのは典型で、逆に総和を求める問題を期待値の問題に言い換えることもある
多分この辺他の人の記事読んだ方がわかりやすいんだよね
考察
当たり前だけどなんて全部計算していられない
で、こういうのは「各区間について、その区間の移動が行われるのは何通りか」を出して足し合わせるのが典型(まぁなんかどこがまとめて計算出来るのかみたいなのを考えるのが大事)
なるべく一般的な計算式が欲しいので、とりあえず番目のスライムが番目のスライムにくっつくのが何通りあるか数えてみて、(つまり、が何回足されるか)これをとおくと、
体のスライム->番目のスライム->番目のスライム
の順番だけ決まっているので、
ただしの時は右端が消えないことが確定しているのでこの場合は
よくみるとはが式中に含まれないからだねとなる
まとめると、
が答え
の部分はグッと睨んだり図を書くと相殺が起こって、
になるので累積和で前計算出来て解けた〜
なんか添字間違ってそうだし計算式そのまま写さないで自分で考えて書いてね
コード
Submission #9433719 - Dwango Programming Contest 6th
42行目まではnCk作ったり雑なmodintなので、43行目から読めばいいと思う
記事そのままだからあんまり見ても仕方ない感あるけど