Processing math: 100%

考虑一个合法序列的生成过程:依次考虑 i:[1,n],将 i 插入序列中。因此,我们考虑如下生成方式:依次考虑 i:[1,n],再考虑一个未被加入的位置集合的子集 T,将 T 从大到小排序插入到序列 q 末尾。

我们钦定 q 满足如下要求:对于 i 选中的 Ti1 选中的 TmaxT>minT 。此时 qp 一一对应,我们只需要考虑 q 的问题。

我们可以形象化地将 q 看成若干递增子段拼合而成,而每一个子段对应一个 i 。因此,为了方便,我们设 d(i,j) 表示长度为 i 的段,钦定 j 个空隙插入小于号的方案数。将钦定小于号的空隙两旁的位置合并,容易得到:
d(i,j)=i![xi](ex1)ij
而对于 i 的问题,考虑每个位置的贡献(注意到我们要求小于号个数恰好为 i1):
ans(i)=n!np=11p!p1c=i1(1)ci+1(ci1)dp,c=n!(i1)!(1)i1np=1[xp]p1c=i1(1)cc!(ci+1)!(ex1)pc=n!(i1)!(1)i1n1c=i1(1)cc!(ci+1)!np=c+1[xp](ex1)pc
此时我们的目标变成了:对 0c<nnp=c+1[xp](ex1)pc 。此时:
np=c+1[xp](ex1)pc=[xc]np=c+1(ex1x)pc=[xc]ncp=1(ex1x)p
为了方便不妨令 F(x)=ex1x,接着推:
[xc]ncp=1(ex1x)p=[xc]F(x)F(x)nc+11F(x)=[xc+1]xF(x)1F(x)[xn+2]x(xF(x))nc+11F(x)
前半部分的多项式对每个 c 都是固定的,而后半部分我们凑了一个 x 使得询问的项对每个 c 也是固定的。

对于后半部分,问题变成了:令 F(x)=x1F(x),G(x)=xF(x)=ex1,对每个 2in+1[xn+2]G(x)iF(x) 。考虑引入辅元 u[xn+2][ui]F(x)1uG(x),令 P(x)=F(G1(x)),用扩展拉格朗日反演提取系数:
[xn+2]P(G(x))1uG(x)=1n+2[xn+1](1ux)P(x)+uP(x)(1ux)2(xG1(x))n+2
最后的任务只剩下求解 G(x)1P(x)=F(G(x)1) 了。构造 G(x)1=ln(x+1) 即可,而对于 F(ln(x+1))=ln(x+1)1F(ln(x+1))=ln(x+1)2ln(x+1)x 也是容易求的。

提交记录:Submission #172105607 – Codeforces

分类: 文章

Qiuly

QAQ

1 条评论

GalaxyOier · 2022年9月18日 11:39 上午

orz

发表回复

Avatar placeholder

您的邮箱地址不会被公开。 必填项已用 * 标注