ABC378G 题解
前言
Update 2024.11.6
- 突然发现一个错误,应该是:只需要保证在加入
的时候, 已经有值了即可。
经过和 @gza 和 @ORzyzRO 的讨论应该会了这道题。谢谢你们。
前置知识:杨表基础知识,还有 Robinson–Schensted 对应(即两个形状相同的标准杨表与一个排列一一对应)
对于官方“状态数较少”的解释(来自 @masterhuang):在本题限制下杨表的形态数为
思路(采用了官方题解的大部分表述,但增加了一些内容)
在原题中,给定了最长递增子序列 (LIS = A) 和最长递减子序列 (LDS = B) 的长度,并且
。
注意:只对于最终得到的杨表 1,即 RSK 插入得到的杨表有这个限制,但对于另一个的限制只有形状相同!!!
我们考虑对于一个符合的杨表,直接按从小到大的数来确定它,具体而言:我们假设当前得到的是只考虑
请注意:我们不是按照插入的顺序构造杨表,而是直接拓展原本的杨表!!!
只要一直加在轮廓线上就可以满足杨表的性质,同时我们要保证
code
(代码中的 A, B 应该是反过来的,但是这道题中杨表转置也不影响答案)
官方题解
官方题解
题目描述
给定整数
有多少种排列
的最长递增子序列的长度为 。 的最长递减子序列的长度为 。- 存在一个整数
,将 添加到 的末尾不会改变 的最长递增子序列和最长递减子序列的长度。
题解
本题是考察 Robinson–Schensted 对应的练习题。
关于 Robinson–Schensted 对应的解释,国际读者可参考 英文维基百科。
在原题中,给定了最长递增子序列 (LIS) 和最长递减子序列 (LDS) 的长度,并且
具体来说,该形状为一个矩形,有
考虑第三个条件。由于 LIS 和 LDS 长度不变,将
, 。
为了满足这些条件,原来的
。
综上所述,我们只需统计满足以下条件的
包含从 到 的所有整数, , , 。
在没有第四个条件的情况下,可以使用钩长公式轻松求解结果,但第四个条件会使得问题更复杂。
在本题中,给定的约束足够小,可以使用动态规划 (DP) 进行求解,其中
思路解释
题目要求找到满足 LIS 和 LDS 长度要求的排列数量。由于 Robinson–Schensted 对应提供了一种将排列映射到杨表形状的方法,我们可以确定每种满足 LIS 和 LDS 长度的排列对应的杨表形状,并对该形状上的数字填充问题进行求解。通过动态规划和钩长公式,我们能够快速计算出满足条件的排列数量。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南