杨表
杨表和 LIS、LDS、排列与序列等有紧密关系。
定义
设
定义 1(杨图):一个
定义 2(杨表):将
定义 3(半杨表):将
定义 4(行插入):设当前有一个杨表,一个行插入操作有一个参数
容易发现杨表插入后还是杨表。
定义 5(列插入):与行插入类似。
定义 6(行删除):可以看作是行插入的还原操作。取最后一行的数
定义 7(列删除):与行删除类似。
定义 8(勾长):记
Hook Formula:假设有一个杨图
RSK Correspondence
设当前有一个排列
另外构造一个杨表
把
定理:排列
证明:因为有删除操作,从
推论:
证明:排列与杨表对一一对应,枚举杨图然后枚举
定理:不严格递增的坐标序列与半杨表对一一对应。
(这里比较坐标的大小是按字典序比较)
证明:设坐标序列为
性质
性质 1:若
证明:直接证明拓展版本,也就是普通序列和半杨表。这显然拓展版本强于原命题。
先来几个定义。
考虑一个不严格递增坐标序列
同时考虑一个不严格递增坐标序列
显然序列、矩阵、方阵是一一对应的。
如果
开始正式证明。
观察到若
因此可以转化命题为:
简单起见,假设没有重复元素(坐标互不相等),此时
考虑
发现每一列上曾经存在过的数,构成一个递减序列。进一步观察,每一列都是从剩下没选的元素里贪心取 LDS 的结果,也就是贪心地把序列划分成若干个下降序列。
在方阵里看,这样的划分实际上是从一个
观察到
然后考虑之后的行。在填了第一行之后有一些数被挤下去了,而这些挤下去的数是什么样子?
设一条链为
我们设第一行的点构成的方阵为
有了这些观察就可以证明性质 1 了。
正式证明里的正式证明。
巨大进步!我们已经证明了第一行是相等的。
一个强烈的想法是用归纳法。那我们就用归纳法。
把
把
根据上面两条,有:
根据归纳假设,
对于
上面的证明和元素是否相等关系不大,套用证明的流程可以把有相等的情况证了。
性质 1 推论 1:因为
性质 1 推论 2:一个对称矩阵对应一个半杨表,那什么对应一个杨表呢?类似有
推论 2 应用:可以求杨表个数。大小
法一:这个个数就是
法二:这个个数就是由若干各环组成,每个环大小为
性质 2:若
证明:
记杨表
引理:
记
根据归纳法易证
而
性质 3:
证明:
-
对于列数。
考虑这么一个 LIS 的贪心算法:从前往后扫,维护一个小根堆的序列。若当前数比当前末尾的堆顶大,新开一个堆;否则放入堆中。堆的个数就是 LIS 长度。容易发现这其实模拟了构造杨表的过程。
-
对于行数。
.
性质 3 推论:在
证明太难,略。
快速求杨表
可以在
我们只需要考虑
怎么求
令
我们只需要知道求前
怎么求
直接暴力行插入,如果到达
题目应用
Gym 102538D
题意:计数排列,满足有两个不相交的 LIS。
这样的排列对应的杨表形态就是第一、二行长度相等。因此枚举
LIS 3(无题号)
题意:计数排列,满足 LDS 长度
即杨表的高度
另解:
P4484
题意:随机排列,求 LIS 期望长度。
即
注:本题推论得到随机 LIS 的长度是
P3774(偏门结论)
题意:
给定一个序列
一个序列是 k-LIS 的,当且仅当其 LIS 长度
首先去除
然后考虑一个询问
容易想到把询问离线,然后按
为了确定
考虑前
但是发现这是做不了的,因为插入只能向后插入,不能在开头插入。
这里需要另一个结论:
这个结论来自某篇 paper,具体证明我也不会。
根据这个结论,取
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!