也许施工完成啦?


  对于常数项为 \(0\),一次项非 \(0\) 的多项式 \(F,G\),定义复合运算 \(\circ\),满足

\[(F\circ G)(x)=F(G(x))=\sum_{i\ge 0}g_iF^i(x).
\]

对于域 \(\mathbb F\),令 \(\mathcal S\) 为 \(\mathbb F[[x]]\) 中所有满足上述条件的多项式构成的集合。对于任意多项式 \(F\in \mathcal S\),我们存在一种暴力构造方法唯一确定 \(G\) 使得 \(F\circ G=x\),因而 \(\circ\) 在 \(\mathcal S\) 上可逆。继而不难说明,\((\mathcal S,\circ)\) 构成群,即多项式复合群

  注意在群意义下,满足 \(F\circ G=x\) 的 \(F,G\) 应当互为逆元,因而有一个小结论

\[F\circ G=x\Leftrightarrow G\circ F=x.
\]

此时,也称 \(F,G\) 互为复合逆


  Lagrange 反演指出,对于 \(F,G\in\mathcal S\),满足 \(F\circ G=x\) 时,有

\[[x^n]G(x)=\frac{1}{n}[x^{-1}]F^{-n}(x).
\]

  其中涉及比较诡异的 "\([x^{-1}]\)"。事实上,这些运算是在分式域下进行的。在分式域 \(\mathbb F(x)\) 下,任意非零整式 \(F(x)\) 存在乘法逆。因为我们总能找到 \(\mathbb F[[x]]\) 下的可逆整式 \(G(x)=F(x)/x^k\),那么此时 \(F^{-1}(x)=x^{-k}G^{-1}(x)\)。

  接下来尝试证明反演公式。先证明引理:对于 \(k\in\mathbb Z,F\in\mathcal S\),有

\[[x^{-1}]F'(x)F^{k}(x)=[k=-1].
\]
  • 当 \(k\neq-1\),\(F'(x)F^k(x)=\left(\frac{F^{k+1}(x)}{k+1}\right)'\)。根据上文科普,这一结果为整式,因而 \([x^{-1}]=0\)。
  • 当 \(k=-1\),\([x^{-1}]F'(x)F^{-1}(x)=[x^0]F'(x)(F(x)/x)^{-1}\),根据 \(F\in\mathcal S\) 这一性质可知 \(F(x)/x\) 在整式下可逆。观察发现 \([x^0]F'(x)=[x^0](F(x)/x)=[x^1]F(x)\),因而 \([x^{-1}]F'(x)F^{-1}(x)=1\)。

  接下来进行原命题证明。已知

\[(F\circ G)(x)=\sum_{i\ge1}f_iG^i(x)=x.
\]

两边求导,

\[\sum_{i\ge1}if_iG^{i-1}(x)G'(x)=1.
\]

靠向证明目标,两边(在分式域下)除以 \(G^n(x)\) 并取 \([x^{-1}]\),

\[[x^{-1}]\sum_{i\ge1}if_iG^{i-1-n}G'(x)=[x^{-1}]G^{-n}(x).
\]

对左侧运用引理,当且仅当 \(i=n\) 时 \([x^{-1}]G^{i-1-n}G'(x)=1\neq0\),因而

\[nf_n=[x^{-1}]G^{-n}(x)\\
\Rightarrow
\begin{cases}
[x^n]F(x)=\frac{1}{n}[x^{-1}]G^{-n}(x)\\
[x^n]G(x)=\frac{1}{n}[x^{-1}]F^{-n}(x)
\end{cases}.~~~~\square
\]

  作为整式爱好者,可以将这一结论变为

\[[x^n]G(x)=\frac{1}{n}[x^{n-1}](F(x)/x)^{-n}.
\]

其中 \(F(x)/x\) 整式下可逆,规避了分式域。


  扩展 Lagrange 反演:对于满足 \(F\circ G=x\) 的 \(F,G\in\mathcal S\) 以及任意多项式 \(H(x)\),有

\[[x^n](H\circ G)(x)=\frac{1}{n}[x^{-1}]H'(x)F^{-n}(x).
\]

证明依葫芦画瓢叭,首先有

\[G\circ F=x\Rightarrow H\circ(G\circ F)=(H\circ G)\circ F=H.
\]

展开求导,

\[\sum_{i\ge1}i\cdot[x^i](H\circ G)(x)\cdot F^{i-1}(x)F'(x)=H'(x).
\]

除以 \(F^n(x)\) 并取 \([x^{-1}]\),顺带用引理,

\[n[x^n](H\circ G)(x)=[x^{-1}]H'(x)F^{-n}(x)\\
\Rightarrow [x^n](H\circ G)(x)=\frac{1}{n}[x^{-1}]H'(x)F^{-n}(x).~~~~\square
\]

  当然也有好看 ver:

\[[x^n](H\circ G)(x)=\frac{1}{n}[x^{n-1}]H'(x)(F(x)/x)^{-n}.
\]

(好像啥也没多干啊。)


  喜闻乐见的例题时间。

  一定要看样例解释捏。(

  令 \(G(x)\) 为答案的 GF,\(F(x)=\sum_ix^{d_i}\),显然

\[G(x)=x+F(G(x))\\
\Rightarrow G(x)-F(G(x))=x.
\]

令 \(H(x)=x-F(x)\),Lagrange 反演得

\[[x^n]G(x)=\frac{1}{n}[x^{n-1}](H(x)/x)^{-n}.
\]

正巧 \([x^0](H(x)/x)=1\),规规整整多项式快速幂。复杂度 \(\mathcal O(n\log n)\)。

  由于状态间的转移概率很方便刻画,但是结束状态反而难以表达,所以可以想到把期望轮数转化成:非法状态出现概率 \(\times\) 此时进行一次有效转移的期望轮数。后者仅与已有卡牌数量有关,故我们只需要求出前者,即确定已有卡牌数量情况下的非法状态数量。

  不同的连续段的计数是独立的。单独考虑长度为 \(n\) 的一个连续段,在其上构造非法状态的方法可描述为:任意获得连续的 \(t\in[0,k)\) 张卡牌,然后强制跳过一张卡牌。用对象 \(x\) 描述考虑过的卡牌数量,对象 \(y\) 表示跳过的卡牌数量。那么对于“连续获得卡牌”,其 GF 为

\[P(x)=\frac{x-x^{k+1}}{1-x}.
\]

继而,上述构造方法所描述情景的 GF 为

\[F(x,y)=\sum_{i\ge0}P^{i}(x)y^{i}=\frac{1}{1-P(x)y}.
\]

  构造完成后,必然考虑过 \(n+1\) 张卡牌。(第 \(n\) 张之后又“强制跳过”一张。)所以,在长度为 \(n\) 的连续段上不选 \(m\) 张卡牌,使得连续段不合法的方案数为

\[[x^{n+1}y^{m+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)\) 的复合逆,那么

\[[x^{n+1}]F(x,y)=\frac{1}{n+1}[x^n]\frac{y}{(1-xy)^2}(Q(x)/x)^{-n-1}.
\]

求导出来一个 \((1-xy)^{-2}\),不过我们只取 \([x^{n+1}]\) 这一项,所以也很容易提取对应的 \(y\) 的系数。接下来就只需要求出 \((Q(x)/x)^{-n-1}\)。

  根据假设,

\[\frac{Q(x)-Q^{k+1}(x)}{1-Q(x)}=x\\
\Rightarrow x-(x+1)Q(x)+Q^{k+1}(x)=0.
\]

直接牛迭得到:

\[Q_{2n}(x)=Q_n(x)+\frac{x-(x+1)Q_n(x)+Q_n^{k+1}(x)}{x+1-(k+1)Q_n^k(x)}.
\]

虽然一看常数就巨大但起码能求。

  最后,设第 \(i\) 个连续段关于 \(y\) 的 GF 为 \(R_i(y)=[x^{n_i+1}]F_i(x,y)\),则答案为

\[\sum_{i=1}^m\binom{m}{i}^{-1}\cdot\frac{m}{i}\cdot[y^i]\prod_j R_j(y)/y.
\]

其中 \(R(y)/y\) 亦是处理最后一个虚假的“强制跳过”。瓶颈在于计算最后一项多项式卷积,复杂度 \(\mathcal O(m\log^2m)\),但我猜最慢的地方还是求 \(Q(x)\)。

Note -「Lagrange 反演」记笔习学的更多相关文章

  1. Note -「Lagrange 插值」学习笔记

    目录 问题引入 思考 Lagrange 插值法 插值过程 代码实现 实际应用 「洛谷 P4781」「模板」拉格朗日插值 「洛谷 P4463」calc 题意简述 数据规模 Solution Step 1 ...

  2. Note -「单位根反演」学习笔记

    \(\mathcal{Preface}\)   单位根反演,顾名思义就是用单位根变换一类式子的形式.有关单位根的基本概念可见我的这篇博客. \(\mathcal{Formula}\)   单位根反演的 ...

  3. Note -「Mobius 反演」光速入门

    目录 Preface 数论函数 积性函数 Dirichlet 卷积 Dirichlet 卷积中的特殊函数 Mobius 函数 & Mobius 反演 Mobius 函数 Mobius 反演 基 ...

  4. Note -「动态 DP」学习笔记

    目录 「CF 750E」New Year and Old Subsequence 「洛谷 P4719」「模板」"动态 DP" & 动态树分治 「洛谷 P6021」洪水 「S ...

  5. ☆ [POI2007] ZAP-Queries 「莫比乌斯反演」

    题目类型:莫比乌斯反演 传送门:>Here< 题意:求有多少对正整数对\((a,b)\),满足\(0<a<A\),\(0<b<B\),\(gcd(a,b)=d\) ...

  6. 「BZOJ 3529」「SDOI 2014」数表「莫比乌斯反演」

    题意 有一张 \(n\times m\) 的数表,其第\(i\)行第\(j\)列的数值为能同时整除\(i\)和\(j\)的所有自然数之和. \(T\)组数据,询问对于给定的 \(n,m,a\) , 计 ...

  7. 「BZOJ 3994」「SDOI 2015」约数个数和「莫比乌斯反演」

    题意 设\(d(x)\)为\(x\)的约数个数,求\(\sum_{i=1}^{n}\sum_{j=1}^{m}d(ij)\). 题解 首先证个公式: \[d(ij) = \sum_{x|i}\sum_ ...

  8. 「CF235E」Number Challenge「莫比乌斯反演」

    一个结论:(从二维扩展来的,三维也是对的,证明可以考虑质因数分解) \[ d(ijk)=\sum_{i'|i}\sum_{j'|j}\sum_{k'|k}[\gcd(i',j')=1][\gcd(i' ...

  9. 「日常开发」记一次因使用Date引起的线上BUG处理

    生活中,我们需要掌控自己的时间,减少加班,提高效率:日常开发中,我们需要操作时间API,保证效率.安全.稳定.现在都2020年了,了解如何在JDK8及以后的版本中更好地操控时间就很有必要,尤其是一次线 ...

  10. Note -「Min_25 筛」“你就说这素因子你要不要吧?你要不要?”

      赛上想写,Track Lost 了属于是. \(\mathscr{Intro}\)   Min_25 筛是用于求积性函数前缀和,同时顺带求出一些"有意思"的信息的筛法.   一 ...

随机推荐

  1. Uniswap V2 核心 合约代码

    Uniswap V2 核心 UniswapV2Factory UniswapV2Pair UniswapV2ERC20 IUniswapV2Router02 1. UniswapV2Factory 合 ...

  2. Nuxt.js 应用中的 nitro:build:before 事件钩子详解

    title: Nuxt.js 应用中的 nitro:build:before 事件钩子详解 date: 2024/11/4 updated: 2024/11/4 author: cmdragon ex ...

  3. 14-8 C++函数调用运算符

    目录 14.8.0 引入 函数对象 含有状态的函数对象 函数对象常做泛型算法实参 14.8.1 lambda是函数对象 表示没有捕获值的lambda的类 表示lambda及其捕获行为的类 14.8.2 ...

  4. C++之OpenCV入门到提高004:Mat 对象的使用

    一.介绍 今天是这个系列<C++之 Opencv 入门到提高>得第四篇文章.这篇文章很简单,介绍如何使用 Mat 对象来实例化图像实例,了解它的构造函数和常用的方法,这是基础,为以后的学习 ...

  5. 两台笔记本电脑实现同一wifi下虚拟主机网络实现互通

    一台win笔记本 (安装vmware) 一台macbookpro 本人考虑到M1的macbook,无法安装vmware,这让我这个linux运维人员很是dan疼,没办法只能在自己的win笔记本上安装v ...

  6. 22.使用Rancher2.0搭建Kubernetes集群

    使用Rancher2.0搭建Kubernetes集群 中文文档:https://docs.rancher.cn/docs/rancher2 安装Rancher2.0 使用下面命令,我们快速的安装 # ...

  7. 痞子衡嵌入式:关于恩智浦SDK2.0里事务型中断处理函数(DriverIRQHandler)的重定向注意事项

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是SDK2.0里事务型中断处理函数(DriverIRQHandler)的重定向注意事项. 最近有一个 i.MXRT 客户在使用官方 SDK ...

  8. ARC121D 1 or 2

    ARC121D 1 or 2 诈骗题. 思路 吃一个糖的操作可以看做是和一个 \(a_i\) 为 0 的糖一起吃. 可以枚举有多少个糖单独吃来确定要增加多少个 0. 问题变为每次吃两颗糖. 根据人类直 ...

  9. 2023NOIP A层联测16 T3 货物运输

    2023NOIP A层联测16 T3 货物运输 题目描述说这是一个仙人掌图,通常将问题转换为环和树的问题在使用圆方树来解决. 树解法 令 \(a_i=s_i-\frac{\sum s_i}{n}\) ...

  10. Python网络爬虫之requests模块2

    Python网络爬虫之requests模块(2) 今日内容 session处理cookie proxies参数设置请求代理ip 基于线程池的数据爬取 知识点回顾 xpath的解析流程 bs4的解析流程 ...