由于本文过长,\(\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. Django中的request到底有啥属性

    Django中的request到底有啥属性呢 Request 我们知道当URLconf文件匹配到用户输入的路径后,会调用对应的view函数,并将  HttpRequest对象  作为第一个参数传入该函 ...

  2. python 并发专题(五):离散事件仿真(事件循环生成器)

    出租车队运营仿真 创建几辆出租车,每辆车会拉几个乘客,然后回家.出租车首先驶离车库,四处徘徊,寻找乘客:拉到乘客后,行程开始:乘客下车后,继续四处徘徊. 程序解释 程序的输出示例: 创建 3 辆出租车 ...

  3. java 基本语法(十一) 数组(四)数组的常见算法

    1.数组的创建与元素赋值: 杨辉三角(二维数组).回形数(二维数组).6个数,1-30之间随机生成且不重复. 杨辉三角 public class YHSJ { public static void m ...

  4. SQLAlchemy03 /外键、连表关系

    SQLAlchemy03 /外键.连表关系 目录 SQLAlchemy03 /外键.连表关系 1.外键 2.ORM关系以及一对多 3.一对一的关系 4.多对多的关系 5.ORM层面的删除数据 6.OR ...

  5. 机器学习实战基础(三十):决策树(三) DecisionTreeRegressor

    DecisionTreeRegressor class sklearn.tree.DecisionTreeRegressor (criterion=’mse’, splitter=’best’, ma ...

  6. hihoCoder 1037 数字三角形 最详细的解题报告

    题目来源:hihoCoder 1037 数字三角形 解题思路:请好好看看 提示一.提示二.提示三 具体算法(java版,可以直接AC) import java.util.Scanner; public ...

  7. Ethical Hacking - NETWORK PENETRATION TESTING(1)

    Pre--Connection-Attacks that can be done before connecting to the network. Gaining Access - How to b ...

  8. msf stagers开发不完全指北(四): msf 中使用域前置技术隐藏流量

    msf 中使用域前置技术隐藏流量 前几篇都是说了下如何采用不同的语言开发 reverse_tcp 第二阶段,接下来将慢慢分析 reverse_http,这篇文章并不会围绕 stagers 进行讲解,这 ...

  9. 搭建sonarqube分析golang代码

    准备postgres 为什么不使用Mysql呢,因为从7.9就不支持了 docker启动postgres docker run -d \ --name sonar-postgres \ -e POST ...

  10. Windows搭建Redis集群-详细教程

    一.集群知识 1.集群的概念 所谓的集群,就是通过添加服务器的数量,提供相同的服务,从而让服务器达到一个稳定.高效的状态. 2.使用redis集群的必要性 问题:我们已经部署好了redis,并且能启动 ...