SRM402 Div2 1000
問題
ある数列permutationが与えられる.これは1からnまでの数字がn個ランダムに並んでおり,これを昇順に並べたい.そこで,i
考え方
それぞれの数列が何回でそろうかの期待値を計算する.
まず,ある数列について,swapできる回数countを計算する.count==0ならば,すでに昇順にならんでいるので0回でそろう(すでにそろってる).
count>0ならば,swap後の数列から等確率(1/count)で選ばれるので,この数列の期待値はswap後の数列の分足した,Σ{(swap後の数列の期待値+この数列からのswap1回)*(1/count)}となる.
あとは,各数列の昇順に並べるまでかかる期待されるswap回数(期待値)が上の方法でもとめられるので,各数列の期待値をメモ化すればいい.
反省
vector
期待値周りがよくわかってない.