zoukankan      html  css  js  c++  java
  • SDOI2019 集训 小孩召开法 题解

    小孩召开法

    主要发布于 洛谷博客

    感谢

    PS:我也不知道这比赛叫啥。

    本题解由 d2019dy,Tamaki_Iroha 和 disangan233 花费数天时间在省略了亿点细节的原题解上补充而成。

    感谢 AChen,EIegia 提供的帮助。

    这题是我目前做过的最毒瘤的式子题,希望不会有下一道。

    题意

    求长为 (n) 的,最长交替子序列的长度为 (k) 的排列个数。 (n leq 10^{18} ,k leq min(10^6 , n))

    QQ图片20200509214014.png

    做法

    (a_k(n)) 为答案,有

    [a_k(n)=sum_{j=0}^n inom nj sum_{2r+s=k-1} (a_{2r}(j)+a_{2r+1}(j))a_s(n-j) ]

    (F_k(x))(a_k(x)) 的 EGF,式子可以化为

    [F_k'(x)=sum_{2r+s=k-1}(F_{2r}(x)+F_{2r+1}(x))F_s(x) ]

    (A(x,t)=sum_{n,kgeq 0} a_k(n)frac {x^n}{n!}t^k)(A_1(x,t)=sum_{kgeq 0}F_{2k}(x)t^{2k})(A_2(x,t)=sum_{kgeq 0}F_{2k+1}(x)t^{2k+1}),有

    [A_1(x,t)=frac 12(A(x,t)+A(x,-t)) qquad A_2(x,t)=frac 12(A(x,t)-A(x,-t)) ]

    [frac {partial A(x,t)}{partial x}=frac {t+1}4(A^2(x,t)+A^2(x,-t)) qquad frac {partial A(x,-t)}{partial x}=frac {t+1}4A(x,t)A(x,-t) ]

    可得

    [frac {partial A_1}{partial x} = tA_1A_2+A_1^2 qquad frac {partial A_2}{partial x}=tA_1^2+A_1A_2 ]

    那么有

    [frac {partial(A_1^2-A_2^2)}{partial x}=0 ]

    所以可得

    [A_1^2(x,t)-A_2^2(x,t)=1 ]

    (b_k(x)=sum_{jleq k}a_k(x))(B_k) 为其 EGF,解一下可得

    [A(x,t)=(1-t)B(x,t) qquad B(x,t)= frac {frac 2 ho}{1-frac {1- ho}te^{ ho x}} - frac 1{sqrt{1-t^2}} ]

    其中 ( ho=sqrt{1-t^2})。证明如下:

    [frac {partial A}{partial x} = (tA_1+A_2)(A_1+A_2)=frac 12 (tA+frac tA+A-frac 1A) ]

    可得

    [egin{aligned} &frac {partial A}{A((t+1)A+frac {t-1}A)} = frac{partial x}2 = frac {partial B}{(1-t^2)B^2-1} \ &partial( ho B)(frac 1{ ho B -1}-frac 1{ ho B+1}) = ho partial x \ &log frac { ho B-1}{ ho B+1}= ho x +C(t) end{aligned} ]

    所以可得

    [frac { ho B-1}{ ho B+1} = C(t)e^{ ho x} Rightarrow B =frac {1+C(t)e^{ ho x}}{ ho(1-C(t)e^{ ho x})} ]

    其中

    [C(t)=frac {frac { ho}{1-t}-1}{frac { ho}{1-t}+1} ]

    证毕。


    考虑一个结论

    [b_k(n)=frac 1{2^k-1}sum_{r+2sleq k,requiv k pmod 2} (-2)^s inom {k-s}{frac {k+r}2}inom ns r^n ]

    证明如下

    [egin{aligned} B(x,t) &= frac 2{ ho}left(1-frac{1- ho}te^{ ho x} ight)^{-1} \ &= frac 2{ ho} sum_rleft(frac{1- ho}te^{ ho x} ight)^re^{-r(1- ho)x} \ &= frac 2{ ho} sum_rleft(frac{1- ho}te^{ ho x} ight)^r sum_s frac{(-r(1- ho)x)^s}{s!} \ &= frac 2{ ho} sum_{r,sgeq 0} left(frac t2 ight)^r frac {(-rt^2frac x2)^s}{s!}e^{rx}left(frac {2-2 ho}{t^2} ight)^{r+s} \ &= 2sum_{r,sgeq 0} left(frac t2 ight)^r frac {(-rt^2frac x2)^s}{s!} left[sum_linom {r+s+2l}lleft(frac {t^2}4 ight)^l ight]left[sum_mfrac {(rx)^m}{m!} ight] \ &= sum_{r,s,l,m}(-1)^s2^{1-r-s-2l}inom {r+s+2l}{r+s+l}inom {s+m}s r^{s+m}t^{r+2s+2l} inom {s+m}s r^{s+m}t^{r+2s+2l}frac {x^{s+m}}{(s+m)!} end{aligned} ]

    (n=s+m)(k=r+2s+2l) 即可。

    证明的其他部分都是一些基础技巧,主要难点是倒数第二步的

    [left(frac {2-2 ho}{t^2} ight)^n=sum_iinom {n+2i}ileft(frac {t^2}4 ight)^i ]

    可以发现原式可以化成

    [frac 1{sqrt{1-4x}}left(frac {1-sqrt{1-4x}}{2x} ight)^m = sum_{i=0}^infty inom {n+2i}i x^i ]

    具体可以参考《具体数学》公式 5.72,来自 1838 年一个广义二项式级数的 paper。

    这里是来自 EI 的证明

    prove


    枚举 (r),接下来的问题就是快速算

    [g_k (x) = sum_s(-2)^s inom ns inom {k-s}x ]

    可以证明

    [g_k(x)=-frac 1x((2n-x)g_k(x-1)+(k-x+2)g_k(x-2) ]

    (n=k) 时显然,由 (g_k (x) = g_{k−1}(x − 1) + g_{k−1}(x))归纳即可。

    (O(k)) 递推 (g_k),计算快速幂即可,时间复杂度 (O(k log n))(O(k))

  • 相关阅读:
    git 分支报错: error: The following untracked working tree files would be overwritten by merge
    JSAPI唤起微信支付
    解决html body 元素在底部设置padding-bottom 或者margin-bottom失效的问题
    Java中的接口
    Java中的抽象类
    IDEA快捷键
    Java的访问控制权限修饰符
    Java中的包机制和import机制
    Java中的final关键字
    Java面向对象三大特征
  • 原文地址:https://www.cnblogs.com/disangan233/p/12885168.html
Copyright © 2011-2022 走看看