考虑一个合法序列的生成过程:依次考虑 i:[1,n],将 i 插入序列中。因此,我们考虑如下生成方式:依次考虑 i:[1,n],再考虑一个未被加入的位置集合的子集 T,将 T 从大到小排序插入到序列 q 末尾。
我们钦定 q 满足如下要求:对于 i 选中的 T 和 i−1 选中的 T′,maxT>minT′ 。此时 q 与 p 一一对应,我们只需要考虑 q 的问题。
我们可以形象化地将 q 看成若干递增子段拼合而成,而每一个子段对应一个 i 。因此,为了方便,我们设 d(i,j) 表示长度为 i 的段,钦定 j 个空隙插入小于号的方案数。将钦定小于号的空隙两旁的位置合并,容易得到:
d(i,j)=ii−j
而对于 i 的问题,考虑每个位置的贡献(注意到我们要求小于号个数恰好为 i−1):
ans(i)=n!n∑p=11p!p−1∑c=i−1(−1)c−i+1(ci−1)dp,c=n!(i−1)!(−1)i−1n∑p=1[xp]p−1∑c=i−1(−1)cc!(c−i+1)!(ex−1)p−c=n!(i−1)!(−1)i−1n−1∑c=i−1(−1)cc!(c−i+1)!n∑p=c+1[xp](ex−1)p−c
此时我们的目标变成了:对 0≤c<n 求 n∑p=c+1[xp](ex−1)p−c 。此时:
n∑p=c+1[xp](ex−1)p−c=[xc]n∑p=c+1(ex−1x)p−c=[xc]n−c∑p=1(ex−1x)p
为了方便不妨令 F(x)=ex−1x,接着推:
[xc]n−c∑p=1(ex−1x)p=[xc]F(x)−F(x)n−c+11−F(x)=[xc+1]xF(x)1−F(x)−[xn+2]x(xF(x))n−c+11−F(x)
前半部分的多项式对每个 c 都是固定的,而后半部分我们凑了一个 x 使得询问的项对每个 c 也是固定的。
对于后半部分,问题变成了:令 F′(x)=x1−F(x),G(x)=xF(x)=ex−1,对每个 2≤i≤n+1 求 [xn+2]G(x)iF′(x) 。考虑引入辅元 u 求 [xn+2][ui]F′(x)1−uG(x),令 P(x)=F′(G−1(x)),用扩展拉格朗日反演提取系数:
[xn+2]P(G(x))1−uG(x)=1n+2[xn+1](1−ux)P′(x)+uP(x)(1−ux)2(xG−1(x))n+2
最后的任务只剩下求解 G(x)−1 和 P(x)=F′(G(x)−1) 了。构造 G(x)−1=ln(x+1) 即可,而对于 F′(ln(x+1))=ln(x+1)1−F(ln(x+1))=ln(x+1)2ln(x+1)−x 也是容易求的。
1 条评论
GalaxyOier · 2022年9月18日 11:39 上午
orz