HHKB プログラミングコンテスト 2020 F - Random Max
↓これ
区間を座圧して得られた個の区間それぞれに対し, 「その区間に属する変数が個で, それ以外の変数がその区間より小さい区間に属する確率」を求めまふ. これは, 変数ごとにその区間に属する確率・それより小さい区間に属する確率を求めたうえでDPしてやればすべてに対してで求められまふ.
区間に個の変数があるとき, そのうち最大の値の期待値を求めたいれふ. 1番大きい値, 2番目に大きい値, ...の期待値は, 内に等間隔で存在しないと偏ってる気がするので, 求める期待値はになる気がしまふ(サンプル1・2を見ると, これで良さそうなのが確認できまふ).
以上の解法でになりまふ. なので不安になるかもしれないれふが, 最大値になりえない区間を除外したり, 現在見ている区間に所属することが無い変数をDPに使わなかったりすることで, 余裕をもってAC出来まふ.
ちゃんと解析すると, 最悪ケースはのようなケースになりまふ(が10未満になるケースがあると区間の個数自体は増えるのれふが, こうして生じた区間は最大値になりえないため影響がないれふ). これらを座圧して得られる区間のうち, は個の変数が属する可能性がありまふが, は個, は個, ...と減っていきまふ. そのため, 上述の定数倍高速化をしていれば, 合計でとなりまふ.
また, 区間ごとに行われるの処理も実際には回の処理なので, 最終的に定数倍は程度になり, 余裕に思えまふ.