ABC378G 题解

前言

Update 2024.11.6

  • 突然发现一个错误,应该是:只需要保证在加入 (i,A) 的时候,(i+1,A1) 已经有值了即可。

经过和 @gza 和 @ORzyzRO 的讨论应该会了这道题。谢谢你们。

前置知识:杨表基础知识,还有 Robinson–Schensted 对应(即两个形状相同的标准杨表与一个排列一一对应)

对于官方“状态数较少”的解释(来自 @masterhuang):在本题限制下杨表的形态数为 (0,0) 走到 (a,b) 的方案数。

思路(采用了官方题解的大部分表述,但增加了一些内容)

在原题中,给定了最长递增子序列 (LIS = A) 和最长递减子序列 (LDS = B) 的长度,并且 P 的长度为 (AB1),因此 P 的标准杨表形状是唯一确定的,就是一个 A * B 的杨表扣掉右下方的格子。

n+0.5 的限制即最后一个填的会使其恰好变成一个 A * B 的矩形,等价于要求 P 的杨表 t 满足(这个可以考虑 n+0.5 的插入过程):

  • 1i<B,ti,A>ti+1,A1

注意:只对于最终得到的杨表 1,即 RSK 插入得到的杨表有这个限制,但对于另一个的限制只有形状相同!!!

我们考虑对于一个符合的杨表,直接按从小到大的数来确定它,具体而言:我们假设当前得到的是只考虑 1i 的杨表,形状为 v(即每行分别有几列),加入 i+1,枚举加入在哪一行的末尾,得到一个新的杨表。

请注意:我们不是按照插入的顺序构造杨表,而是直接拓展原本的杨表!!!

只要一直加在轮廓线上就可以满足杨表的性质,同时我们要保证 n+0.5 的限制(上文已经转化成对杨表的值的等价限制),那么只需要保证在加入 (i,A) 的时候,(i+1,A1) 已经有值了即可。

code
(代码中的 A, B 应该是反过来的,但是这道题中杨表转置也不影响答案)

官方题解

官方题解

题目描述

给定整数 ABM

有多少种排列 P=(P1,,PAB1) 满足以下所有条件?请将结果对 M 取模。

  • P 的最长递增子序列的长度为 A
  • P 的最长递减子序列的长度为 B
  • 存在一个整数 n,将 n+0.5 添加到 P 的末尾不会改变 P 的最长递增子序列和最长递减子序列的长度。

题解

本题是考察 Robinson–Schensted 对应的练习题。

关于 Robinson–Schensted 对应的解释,国际读者可参考 英文维基百科

在原题中,给定了最长递增子序列 (LIS) 和最长递减子序列 (LDS) 的长度,并且 P 的长度为 (AB1),因此 P 的标准杨表形状是唯一确定的。

具体来说,该形状为一个矩形,有 B 行和 A 列,右下角的方格被移除。设 (i,j) 表示从上到下第 i 行、从左到右第 j 列的方格,ti,j 表示写在方格 (i,j) 上的数字。当前方格包含 (1,1),,(1,A),(2,1),,(2,A),,(B,1),,(B,A1),且满足 ti,j<ti+1,jti,j<ti,j+1

考虑第三个条件。由于 LIS 和 LDS 长度不变,将 (n+0.5) 添加到 P 末尾会生成一个形状为 B×A 的杨表。设 ti,j 表示生成后的杨表中方格 (i,j) 上的数字,需要满足:

  • t1,A=n+0.5
  • ti+1,A=ti,A (1iB1)

为了满足这些条件,原来的 t 必须满足:

  • ti,A>ti+1,A1 (1iB1)

综上所述,我们只需统计满足以下条件的 t 的数量:

  • t 包含从 1(AB1) 的所有整数,
  • ti,j<ti+1,j
  • ti,j<ti,j+1
  • ti+1,A1<ti,A

在没有第四个条件的情况下,可以使用钩长公式轻松求解结果,但第四个条件会使得问题更复杂。

在本题中,给定的约束足够小,可以使用动态规划 (DP) 进行求解,其中 t 的值依次为 1,2,,AB1 填充。最多存在 500000 个状态,因此通过适当的实现可以快速运行。

思路解释

题目要求找到满足 LIS 和 LDS 长度要求的排列数量。由于 Robinson–Schensted 对应提供了一种将排列映射到杨表形状的方法,我们可以确定每种满足 LIS 和 LDS 长度的排列对应的杨表形状,并对该形状上的数字填充问题进行求解。通过动态规划和钩长公式,我们能够快速计算出满足条件的排列数量。

posted @   SkyMaths  阅读(163)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示