由于本文过长,\(\LaTeX\) 炸了,分两篇,part1

优化

我们假装不会欧拉数的通项式(其实是因为它的通项式不容易继续优化?),使用容斥代替掉欧拉数

设 \(\begin{vmatrix}n\\k\end{vmatrix}\) 表示长度为 \(n\) 的排列,至少有 \(k\) 个小于号的方案数

容易发现,\(\begin{vmatrix}n\\k\end{vmatrix}=\sum\limits_{i=k}^n\dbinom ik\left<\begin{matrix}n\\i\end{matrix}\right>\)

二项式反演一下可以得到:\(\left<\begin{matrix}n\\k\end{matrix}\right>=\sum\limits_{i=k}^n(-1)^{i-k}\dbinom ik\begin{vmatrix}n\\i\end{vmatrix}\)

考虑计算 \(\begin{vmatrix}n\\k\end{vmatrix}\),我们将小于号视为一条边,则至少有 \(n-k\) 个连通块,这些连通块内的顺序是确定的,因为是用小于号连接的

由于是排列问题,则答案为每个块的 \(\mathbf{EGF}\) 卷起来

每个块的 \(\mathbf{EGF}\) 为 \(\mathbf{EGF\{[0,1,1,\cdots]\}}=e^x-1\),为什么常数项为 \(0\)?一个块至少要有一个数字嘛

则 \(\begin{vmatrix}n\\k\end{vmatrix}=n![x^n](e^x-1)^{n-k}\)

代入可得(\(ans_0\) 特判一下,下面就没有 \(\max(k,1)\)了):

\[\begin{aligned}

ans_k&=\sum\limits_{i=k}^n\dbinom ni(n-i)!\sum\limits_{j=k}^i(-1)^{j-k}\dbinom jki![x^i](e^x-1)^{i-j}\\

&=\sum\limits_{i=k}^n\dbinom ni(n-i)!i!\sum\limits_{j=k}^i(-1)^{j-k}\dbinom jk[x^i](e^x-1)^{i-j}\\

&=n!\sum\limits_{i=k}^n\sum\limits_{j=k}^i(-1)^{j-k}\dbinom jk[x^i](e^x-1)^{i-j}\\

&=n!\sum\limits_{j=k}^n(-1)^{j-k}\dbinom jk\sum\limits_{i=j}^n[x^i](e^x-1)^{i-j}\\

&=\dfrac{n!}{k!}\sum\limits_{j=k}^n\dfrac{(-1)^{j-k}j!}{(j-k)!}\sum\limits_{i=j}^n[x^i](e^x-1)^{i-j}\\

\end{aligned}\]

设 \(R_j=\sum\limits_{i=j}^n[x^i](e^x-1)^{i-j}\)

\[\begin{aligned}

ans_k&=\dfrac{n!}{k!}\sum\limits_{j=k}^n\dfrac{(-1)^{j-k}j!}{(j-k)!}R_j\\

&=\dfrac{n!}{k!}\sum\limits_{j=k}^n\dfrac{(-1)^{j-k}}{(j-k)!}\times R_j\cdot j!

\end{aligned}\]


这是一种特殊的卷积,求法参见关于一类特殊卷积的求法

问题转化为求出序列 \(R\)

我们发现 \(R_k\) 的定义式很难看,每一次取的系数都不是同一项的,把它改得漂亮一点:

\[\begin{aligned}

R_k&=\sum\limits_{i=k}^n[x^i](e^x-1)^{i-k}\\

&=\sum\limits_{i=k}^n[x^k](\dfrac{e^x-1}x)^{i-k}\\

&=\sum\limits_{i=0}^{n-k}[x^k](\dfrac{e^x-1}{x})^i

\end{aligned}\]

把它化成封闭形式,设 \(F(x)=\dfrac{e^x-1}{x}\):

\[\begin{aligned}

R_k&=\sum\limits_{i=0}^{n-k}[x^k]F^i(x)\\

&=[x^k]\left(\dfrac{1-F^{n-k+1}(x)}{1-F(x)}\right)\\

&=[x^k]\dfrac{1}{1-F(x)}-[x^k]\dfrac{F^{n-k+1}(x)}{1-F(x)}

\end{aligned}\]


对于前一项,我们可以多项式求逆,但是发现分母常数项为 \(0\),不能直接求逆

那怎么做呢?我们转为求 \(\dfrac{1}{(1-F(x))\cdot x^{-1}}\cdot x^{-1}\),这样就可以避免常数项为 \(0\) 的问题了(由于该式中分母一次项不为 \(0\),所以乘上 \(x^{-1}\) 表示左移一位)

对于正确性的说明,需要引入抽象代数中的分式环(分式域)概念,不展开了,可以百度搜索拉格朗日反演学习一下


则我们只需要求出后一项就做完了,设 \(S_k=[x^k]\dfrac{F^{n-k+1}(x)}{1-F(x)}\)

我们发现 \(S_k\) 很不优美,对于每一个 \(k\),它的多项式长得都不一样,这样我们不可能在低于 \(O(n^2)\) 的时间复杂度内求出

所以我们考虑引入一个新的限制 \(y\),并消除 \(x\) 的影响:

\[\begin{aligned}

S_k&=[x^k]\dfrac{F^{n-k+1}(x)}{1-F(x)}\\

&=[x^{n+1}]\dfrac{(xF(x))^{n-k+1}}{1-F(x)}\\

&=[x^{n+1}y^{n-k+1}]\sum\limits_{i=0}^{\infty}\dfrac{(xF(x))^{i}}{1-F(x)}\\

&=[x^{n+1}y^{n-k+1}]\dfrac{1}{1-F(x)}\cdot\dfrac{1}{1-xF(x)y}\\

\end{aligned}\]


即求出右面多项式 \([x^{n+1}]\) 项关于 \(y\) 的多项式,容易联想到多项式复合科技

但是不太行,因为 \(1-xF(x)y\) 中不仅有 \(F(x)\) 还有 \(x\)

考虑构造两个函数 \(H(x),W(x)\),使得 \(H(W(x))=\dfrac{1}{1-F(x)}\cdot\dfrac{1}{1-xF(x)y}\)

再构造一个函数 \(G(x)\),使得 \(G(W(x))=x\),这样我们就可以使用扩展拉格朗日反演求解了


构造如下:

\(W(x)=xF(x)\)

设 \(M(W(x))=F(x)\),即我们使用 \(M(x)\) 和 \(W(x)\) 复合来消除 \(W(x)\) 中的 \(x\)

则 \(\dfrac{1}{1-F(x)}\cdot\dfrac{1}{1-xF(x)y}=\dfrac{1}{1-M(W(x))}\cdot\dfrac{1}{1-W(x)y}\)

若要使得 \(H(W(x))=\dfrac{1}{1-F(x)}\cdot\dfrac{1}{1-xF(x)y}\),联系上一个式子,容易构造出 \(H(x)=\dfrac{1}{1-M(x)}\cdot \dfrac{1}{1-xy}\)

最后是 \(G(x)\),这个很简单,\(G(x)=\dfrac{x}{M(x)}\),因为此时 \(G(W(x))=\dfrac{xF(x)}{F(x)}=x\)


以上,我们构造出了拉格朗日反演所需的所有函数,直接套用扩展拉格朗日反演公式可得:

\[[x^{n+1}]H(W(x))=\dfrac1{n+1}[x^n]H'(x)\left(\dfrac{x}{G(x)}\right)^{n+1}
\]

暴力计算 \(H'(x)=\dfrac{y(1-M(x))+(1-xy)M'(x)}{(1-M(x))^2(1-xy)^2}\),代入:

\[\begin{aligned}

[x^{n+1}]H(W(x))&=\dfrac1{n+1}[x^n]\dfrac{y(1-M(x))+(1-xy)M'(x)}{(1-M(x))^2(1-xy)^2}\cdot M^{n+1}(x)\\

&=\dfrac1{n+1}[x^n]\left(\dfrac{y}{(1-M(x))(1-xy)^2}+\dfrac{M'(x)}{(1-M(x))^2(1-xy)}\right)\cdot M^{n+1}(x)

\end{aligned}\]

写到这里,公式已经不能看了 qwq,我们把关于 \(y\)的封闭形式展开,这样我们就可以提取出 \(y\) 的某一项啦

\[\begin{aligned}

[x^{n+1}]H(W(x))&=\dfrac1{n+1}[x^n]\left(\dfrac1{1-M(x)}\sum\limits_{i=0}^{\infty}(i+1)x^iy^{i+1}+\dfrac{M'(x)}{(1-M(x))^2}\sum\limits_{i=0}^{\infty}x^iy^i\right)\cdot M^{n+1}(x)\\

\end{aligned}\]

我们提取出第 \(m\) 项(\(S_k\) 需要的即第 \(n-k+1\) 项):

\[\begin{aligned}

&\dfrac1{n+1}[x^ny^m]\left(\dfrac1{1-M(x)}\sum\limits_{i=0}^{\infty}(i+1)x^iy^{i+1}+\dfrac{M'(x)}{(1-M(x))^2}\sum\limits_{i=0}^{\infty}x^iy^i\right)\cdot M^{n+1}(x)\\

=&\dfrac1{n+1}[x^n]\left(\dfrac{mx^{m-1}}{1-M(x)}+\dfrac{M'(x)x^m}{(1-M(x))^2}\right)\cdot M^{n+1}(x)\\

=&\dfrac1{n+1}\left([x^{n-m+1}]m\dfrac{M^{n+1}(x)}{1-M(x)}+[x^{n-m}]\dfrac{M'(x)M^{n+1}(x)}{(1-M(x))^2}\right)

\end{aligned}\]

发现出现了和上面同样的问题:分母的常数项为 \(0\),我们同上面一样转化一下:

\[=\dfrac1{n+1}[x^{n-m+2}]\left(m\dfrac{M^{n+1}(x)}{(1-M(x))x^{-1}}+\dfrac{M'(x)M^{n+1}(x)}{((1-M(x))x^{-1})^2}\right)
\]

突然发现我们还没有求 \(M(x)=\dfrac x{G(x)}\)

\(G(W(x))=G(e^x-1)=x\),容易构造出 \(G(x)=\ln(x+1)\)

则 \(M(x)=\dfrac x{\ln(x+1)}\)

最终时间复杂度 \(O(n\log n)\)

真是一道休闲的好题呢

代码

CF1349F 【Slime and Sequences】part2的更多相关文章

  1. CF1349F 【Slime and Sequences】part1

    由于本文过长,\(\LaTeX\) 炸了,分两篇,part2 题目描述 定义一个正整数序列为好序列,当且仅当如果某个数 \(k\) 出现过,那么一定有 \(k-1\) 在最后一个 \(k\) 的前面出 ...

  2. 【K8S学习笔记】Part2:获取K8S集群中运行的所有容器镜像

    本文将介绍如何使用kubectl列举K8S集群中运行的Pod内的容器镜像. 注意:本文针对K8S的版本号为v1.9,其他版本可能会有少许不同. 0x00 准备工作 需要有一个K8S集群,并且配置好了k ...

  3. 【模式识别与机器学习】——PART2 机器学习——统计学习基础——Regularized Linear Regression

    来源:https://www.cnblogs.com/jianxinzhou/p/4083921.html 1. The Problem of Overfitting (1) 还是来看预测房价的这个例 ...

  4. 【字符串算法3】浅谈KMP算法

    [字符串算法1] 字符串Hash(优雅的暴力) [字符串算法2]Manacher算法 [字符串算法3]KMP算法 这里将讲述  [字符串算法3]KMP算法 Part1 理解KMP的精髓和思想 其实KM ...

  5. 【leetcode 字符串处理】Compare Version Numbers

    [leetcode 字符串处理]Compare Version Numbers @author:wepon @blog:http://blog.csdn.net/u012162613 1.题目 Com ...

  6. 【九度OJ】题目1442:A sequence of numbers 解题报告

    [九度OJ]题目1442:A sequence of numbers 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1442 ...

  7. 【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】

    说17号发超简单的教程就17号,qq核审通过后就封装了这个,现在放出来~~ 这个是我封装的一个开源项目:https://github.com/dunitian/LoTQQLogin ————————— ...

  8. 【夯实PHP基础】PHP数组,字符串,对象等基础面面观

    本文地址 分享提纲 1.数组篇 2.字符创篇 3.函数篇 4.面向对象篇 5.其他篇 /*************************** 一.数组篇 Begin***************** ...

  9. 【Java学习系列】第3课--Java 高级教程

    本文地址 可以拜读: 从零开始学 Java 分享提纲: 1. Java数据结构 2. Java 集合框架 3. Java泛型 4. Java序列化 5. Java网络编程 6. Java发送Email ...

随机推荐

  1. scrapy 基础组件专题(十二):scrapy 模拟登录

    1. scrapy有三种方法模拟登陆 1.1直接携带cookies 1.2找url地址,发送post请求存储cookie 1.3找到对应的form表单,自动解析input标签,自动解析post请求的u ...

  2. java 基本语法(十) 数组(三) 二维数组

    1.如何理解二维数组? 数组属于引用数据类型数组的元素也可以是引用数据类型一个一维数组A的元素如果还是一个一维数组类型的,则,此数组A称为二维数组. 2.二维数组的声明与初始化 正确的方式: int[ ...

  3. Python之爬虫(十六) Scrapy框架中选择器的用法

    Scrapy提取数据有自己的一套机制,被称作选择器(selectors),通过特定的Xpath或者CSS表达式来选择HTML文件的某个部分Xpath是专门在XML文件中选择节点的语言,也可以用在HTM ...

  4. bzoj3673可持久化并查集 by zky&&bzoj3674可持久化并查集加强版

    bzoj3673可持久化并查集 by zky 题意: 维护可以恢复到第k次操作后的并查集. 题解: 用可持久化线段树维护并查集的fa数组和秩(在并查集里的深度),不能路径压缩所以用按秩启发式合并,可以 ...

  5. Getting Started with Recovery Manager (RMAN) (文档 ID 360416.1)

    In this Document Purpose Scope Details Overview of the RMAN EnvironmentDeciding Whether to Use a Fla ...

  6. P4017 最大食物链计数 (拓扑排序)

    看到拓扑排序感觉非常遥远的复杂,不喜欢图.看了拓扑排序的原理,很像广搜. 以本题样例为例: 了解一下 出度 和 入度 5的出度为3 入度为 0 ,3的出度为2  入度为2…… for循环 找到秃头 5 ...

  7. IDEA命令行缩短器助你解决此问题:Command line is too long. Shorten command line...

    生命太短暂,不要去做一些根本没有人想要的东西.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习 ...

  8. 题解 CF 1372 B

    题目 传送门 题意 给出 \(n\),输出 \(a\) ,\(b\) (\(0 < a \leq b < n\)),使\(a+b=n\)且 \(\operatorname{lcm}(a,b ...

  9. Saas Erp以及分销 助手

    首先贴一下相关的截图 SaasErp 登陆页 Saas Erp主页 Saas Erp 其中的商品页 Saas Erp  打印模板设计页 分销助手登录页/手势密码页/主页 1.SaaS是Software ...

  10. xilinx fpga中块ram的使用——简单双端口ram的使用

    在简单双端口ram中最简单有9个端口:分别是 clka  为输入端口的时钟 wea  读写控制端,高为写,低为读 addra 写地址 dina  待写入的数据 clkb 为输出端口的时钟的 addrb ...