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))

原文地址:https://www.cnblogs.com/disangan233/p/12885168.html