zoukankan      html  css  js  c++  java
  • 「codeforces

    link。


    在最后加一个空座位,将序列拆分成 “若干非空座位 + 一个空座位” 这样的段,一共会有 (n + 1 - m) 个段。

    (f_n) 表示 (n) 个人最后坐到一起的方案数,记 (F(x))({f_n}) 对应的 EGF,则答案为 (m![x^m]F^{n+1-m}(x))

    考虑最后一个人坐的位置,容易得到如下递推式:

    [egin{aligned} f_n &= (n+1)sum_{i=1}^{n}inom{n-1}{i-1}f_{i-1}f_{n-i} \ frac{f_n}{(n-1)!}x^{n-1} &= (n+1)sum_{i=1}^{n}frac{f_{i-1}}{(i-1)!}x^{i-1}frac{f_{n-i}}{(n-i)!}x^{n-i} end{aligned} ]

    (n + 1) 拆成 ((i - 1) + (n - i) + 2),得到微分方程 (F' = 2F^2 + 2xFF')

    解该方程,得 (F = exp(2xF))

    如果记 (T(x)) 是有根树的 EGF(即 (T/exp T = x)),事实上还有 (F(x) = T(2x)/2x)

    求各位神仙给个双射构造。

    现在代回,得:

    [egin{aligned} &m![x^m]F^{n+1-m}(x) \ =&m![x^m]left(frac{T(2x)}{2x} ight)^{n+1-m} \ =&m!frac{1}{2^{n+1-m}}[x^{n+1}]T^{n+1-m}(2x) \ =&m!2^m[x^{n+1}]T^{n+1-m}(x) \ end{aligned} ]

    ([x^n]T^k) 是个经典问题,利用拉格朗日反演易知它为 (frac{k}{n} imesfrac{n^{n-k}}{(n-k)!})

    所以最终答案为 (frac{n+1-m}{n+1} imes (2(n+1))^m)

  • 相关阅读:
    LintCode Update Bits
    LintCode Flip Bits
    LintCode Wood Cut
    LintCode Sqrt(x)
    LintCode Binary Search
    LintCode Subarray Sum Closest
    Huffman编码(Huffman树)
    DFS应用——查找强分支
    DFS应用——遍历有向图+判断有向图是否有圈
    DFS应用——找出无向图的割点
  • 原文地址:https://www.cnblogs.com/Tiw-Air-OAO/p/14700138.html
Copyright © 2011-2022 走看看