Semi-Permutations

2 secs 1024 MB
eSeF's icon eSeF

ci:=c_i:=Aj=iA_j=i なる jj の個数)とします。
また、ci=0c_i=0 であるような ii のうち、最小のものを PP、最小から2番目のものを QQ とおきます。
長さが L (0LN)L\ (0\le L\le N) であるような準順列の個数を数えます。

  • 0L<P10\le L< P-1 のとき
    • 答えは (i=1L+1ci)×(i=1L+11ci)\displaystyle (\prod_{i=1}^{L+1}c_i)\times (\sum_{i=1}^{L+1}\frac{1}{c_i}) です。
  • P1L<Q1P-1\le L < Q-1 のとき
    • 答えは (i=1P1ci)×(i=P+1L+1ci)\displaystyle (\prod_{i=1}^{P-1}c_i)\times (\prod_{i=P+1}^{L+1}c_i) です。
  • Q1LQ-1\le L のとき
    • 答えは 00 です。

よって、cic_i の積と逆数和を持ちながら計算することでこの問題は O(NlogN)O(N\log N) で解けます。