也许施工完成啦?
对于常数项为 0,一次项非 0 的多项式 F,G,定义复合运算 ∘,满足
(F∘G)(x)=F(G(x))=∑i≥0giFi(x).
对于域 F,令 S 为 F[[x]] 中所有满足上述条件的多项式构成的集合。对于任意多项式 F∈S,我们存在一种暴力构造方法唯一确定 G 使得 F∘G=x,因而 ∘ 在 S 上可逆。继而不难说明,(S,∘) 构成群,即多项式复合群。
注意在群意义下,满足 F∘G=x 的 F,G 应当互为逆元,因而有一个小结论
F∘G=x⇔G∘F=x.
此时,也称 F,G 互为复合逆。
Lagrange 反演指出,对于 F,G∈S,满足 F∘G=x 时,有
[xn]G(x)=1n[x−1]F−n(x).
其中涉及比较诡异的 "[x−1]"。事实上,这些运算是在分式域下进行的。在分式域 F(x) 下,任意非零整式 F(x) 存在乘法逆。因为我们总能找到 F[[x]] 下的可逆整式 G(x)=F(x)/xk,那么此时 F−1(x)=x−kG−1(x)。
接下来尝试证明反演公式。先证明引理:对于 k∈Z,F∈S,有
[x−1]F′(x)Fk(x)=[k=−1].
- 当 k≠−1,F′(x)Fk(x)=(Fk+1(x)k+1)′。根据上文科普,这一结果为整式,因而 [x−1]=0。
- 当 k=−1,[x−1]F′(x)F−1(x)=[x0]F′(x)(F(x)/x)−1,根据 F∈S 这一性质可知 F(x)/x 在整式下可逆。观察发现 [x0]F′(x)=[x0](F(x)/x)=[x1]F(x),因而 [x−1]F′(x)F−1(x)=1。
接下来进行原命题证明。已知
(F∘G)(x)=∑i≥1fiGi(x)=x.
两边求导,
∑i≥1ifiGi−1(x)G′(x)=1.
靠向证明目标,两边(在分式域下)除以 Gn(x) 并取 [x−1],
[x−1]∑i≥1ifiGi−1−nG′(x)=[x−1]G−n(x).
对左侧运用引理,当且仅当 i=n 时 [x−1]Gi−1−nG′(x)=1≠0,因而
nfn=[x−1]G−n(x)⇒{[xn]F(x)=1n[x−1]G−n(x)[xn]G(x)=1n[x−1]F−n(x). □
作为整式爱好者,可以将这一结论变为
[xn]G(x)=1n[xn−1](F(x)/x)−n.
其中 F(x)/x 整式下可逆,规避了分式域。
扩展 Lagrange 反演:对于满足 F∘G=x 的 F,G∈S 以及任意多项式 H(x),有
[xn](H∘G)(x)=1n[x−1]H′(x)F−n(x).
证明依葫芦画瓢叭,首先有
G∘F=x⇒H∘(G∘F)=(H∘G)∘F=H.
展开求导,
∑i≥1i⋅[xi](H∘G)(x)⋅Fi−1(x)F′(x)=H′(x).
除以 Fn(x) 并取 [x−1],顺带用引理,
n[xn](H∘G)(x)=[x−1]H′(x)F−n(x)⇒[xn](H∘G)(x)=1n[x−1]H′(x)F−n(x). □
当然也有好看 ver:
[xn](H∘G)(x)=1n[xn−1]H′(x)(F(x)/x)−n.
(好像啥也没多干啊。)
喜闻乐见的例题时间。
一定要看样例解释捏。(
令 G(x) 为答案的 GF,F(x)=∑ixdi,显然
G(x)=x+F(G(x))⇒G(x)−F(G(x))=x.
令 H(x)=x−F(x),Lagrange 反演得
[xn]G(x)=1n[xn−1](H(x)/x)−n.
正巧 [x0](H(x)/x)=1,规规整整多项式快速幂。复杂度 O(nlogn)。
由于状态间的转移概率很方便刻画,但是结束状态反而难以表达,所以可以想到把期望轮数转化成:非法状态出现概率 × 此时进行一次有效转移的期望轮数。后者仅与已有卡牌数量有关,故我们只需要求出前者,即确定已有卡牌数量情况下的非法状态数量。
不同的连续段的计数是独立的。单独考虑长度为 n 的一个连续段,在其上构造非法状态的方法可描述为:任意获得连续的 t∈[0,k) 张卡牌,然后强制跳过一张卡牌。用对象 x 描述考虑过的卡牌数量,对象 y 表示跳过的卡牌数量。那么对于“连续获得卡牌”,其 GF 为
P(x)=x−xk+11−x.
继而,上述构造方法所描述情景的 GF 为
F(x,y)=∑i≥0Pi(x)yi=11−P(x)y.
构造完成后,必然考虑过 n+1 张卡牌。(第 n 张之后又“强制跳过”一张。)所以,在长度为 n 的连续段上不选 m 张卡牌,使得连续段不合法的方案数为
[xn+1ym+1]F(x,y).
但 F 并不好求,我们需要继续推导。
注意到 (1−xy)−1 对应的序列是平凡的,我们令 H(x,y)=(1−xy)−1,那么 F(x,y)=H(P(x),y)。尝试对这一二元复合函数施加扩展 Lagrange 反演。令 Q(x) 为 P(x) 的复合逆,那么
[xn+1]F(x,y)=1n+1[xn]y(1−xy)2(Q(x)/x)−n−1.
求导出来一个 (1−xy)−2,不过我们只取 [xn+1] 这一项,所以也很容易提取对应的 y 的系数。接下来就只需要求出 (Q(x)/x)−n−1。
根据假设,
Q(x)−Qk+1(x)1−Q(x)=x⇒x−(x+1)Q(x)+Qk+1(x)=0.
直接牛迭得到:
Q2n(x)=Qn(x)+x−(x+1)Qn(x)+Qk+1n(x)x+1−(k+1)Qkn(x).
虽然一看常数就巨大但起码能求。
最后,设第 i 个连续段关于 y 的 GF 为 Ri(y)=[xni+1]Fi(x,y),则答案为
m∑i=1(mi)−1⋅mi⋅[yi]∏jRj(y)/y.
其中 R(y)/y 亦是处理最后一个虚假的“强制跳过”。瓶颈在于计算最后一项多项式卷积,复杂度 O(mlog2m),但我猜最慢的地方还是求 Q(x)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现