1 条题解
-
0
自动搬运
来自洛谷,原作者为

vegetable_king
全身全霊!MORE MORE JUMP!!搬运于
2025-08-24 23:11:26,当前版本为作者最后更新于2025-05-29 14:37:31,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
基本是官方题解的翻译……
先考虑第一问的答案是什么。考虑对于一个长为 的排列,我们对于每个位置 求出 表示以 结尾的 LIS 长度, 为以 开头的 LDS 长度。那么我们可以定义一个二元组序列 ,其中 。
显然 序列中的元素互不相同,假设有一对 满足 ,那么 能推出 ,否则能推出 。并且根据题目限制,显然有二元组 合法当且仅当 , 序列中所有元素都应当合法。
那么我们得到了一个 的上界 ,我们不妨猜测 一定能取到它。后面的过程中将会证明这一点。
考虑任意一个合法二元组 ,如果有 ,那么 在 中的位置 一定在 在 中的位置 之前,且满足 。
- 若 ,则根据 推出 不能转移到 ,也就是 ,这样 就能转移到 ,与 这一条件矛盾。
- 那么有 ,则根据 推出 不能转移到 ,所以 。
同理,如果有 ,那么 在 中的位置 一定在 在 的位置 之后,且满足 。
可以发现上述条件是长为 的排列 合法的充要条件,那么这个排列 与两个相同形状的 格杨表组成的杨表对 构成双射:
- 两个杨表都包含了所有坐标形如 的格子,满足 为一个合法二元组,且这两个杨表中 恰好出现一次。
- 对于第一个杨表,有 $\lambda_{i, j} < \lambda_{i, j + 1}, \lambda_{i, j} < \lambda_{i + 1, j}$。
- 对于第二个杨表,有 $\mu_{i, j} < \mu_{i, j - 1}, \mu_{i, j} < \mu_{i + 1, j}$。
具体的,从 到长为 的合法排列 ,使 即可;从长为 的合法排列 到 ,求出文章一开始的 ,使 即可。
显然,这样的杨表对一定存在,那么 也一定能够取到上界。 是标准杨表,它的个数可以用勾长公式直接 求出,但是 不是,所以需要另外想办法计数。我们不直接求出 的方案数,而是转而求出等概率随机一个排列填入 使得其合法的概率 ,最后乘上 即可。
考虑另一个杨表 ,其中每个数都是 中的整数,且其满足 $\mu'_{i, j} \textcolor{red}{\le} \mu'_{i, j - 1}, \mu'_{i, j} < \mu'_{i + 1, j}$。设 的每个位置都在 中等概率随机时, 合法的概率为 ,那么有 ,因为 时, 中存在相等的两个数的概率为零。
考虑如何计算 。令满足 的格子所填的数对 从小到大分别为 ,那么我们固定 之后就能将合法的 与平面上起终点分别为 的 条只往右或下走的不交路径组构成双射,具体的,有:
$$S_i = (i, x - A + i)\\ T_i = \begin{cases} (B + i, i) & i \le C - B\\ (C, s_{i - C + B}) & i > C - B\\ \end{cases} $$那么根据 LGV 引理,有:
$$P'(x) = \frac{\sum_{1 \le s_1 < s_2 < \cdots < s_{A + B - C} \le x}|M|}{x^n}\\ P = \lim_{x \to \infty} \frac{\sum_{1 \le s_1 < s_2 < \cdots < s_{A + B - C} \le x}|M|}{x^n}\\ M_{i, j} = \begin{cases} \binom{x - A + B}{B + j - i} & j \le C - B\\ \binom{x - s_{j - C + B} + C - A}{C - i} & j > C - B\\ \end{cases} $$由于我们求的是极值,而分子部分显然是一个多项式,那我们只需要保留最高次项的系数即可:
$$M_{i, j} = \begin{cases} \frac{x^{B + j - i}}{(B + j - i)!} & j \le C - B\\ \frac{(x - s_{j - C + B})^{C - i}}{(C - i)!} & j > C - B\\ \end{cases} $$观察这个矩阵可以发现它的行列式展开后每一项的次数都是相同的,且恰好是 次,那么我们可以上下约掉这么多个 :
$$P = \lim_{x \to \infty} \frac{\sum_{1 \le s_1 < s_2 < \cdots < s_{A + B - C} \le x}|M|}{x^{A + B - C}}\\ M_{i, j} = \begin{cases} \frac{1}{(B + j - i)!} & j \le C - B\\ \frac{(1 - \frac{s_{j - C + B}}x)^{C - i}}{(C - i)!} & j > C - B\\ \end{cases} $$最后,由于 ,所以我们将求和换成积分,将剩余的 全都约掉:
$$P = \int_0^1 \int_{s_1}^1 \cdots \int_{s_{A + B - C - 1}}^1 |M| ds_{A + B - C} \cdots ds_2 ds_1\\ M_{i, j} = \begin{cases} \frac{1}{(B + j - i)!} & j \le C - B\\ \frac{(1 - s_{j - C + B})^{C - i}}{(C - i)!} & j > C - B\\ \end{cases} $$把 序列反转,值域翻转:
$$P = \int_0^1 \int_0^{s_1} \cdots \int_0^{s_{A + B - C - 1}} |M| ds_{A + B - C} \cdots ds_2 ds_1\\ M_{i, j} = \begin{cases} \frac{1}{(B + j - i)!} & j \le C - B\\ \frac{{s_{j - C + B}}^{C - i}}{(C - i)!} & j > C - B\\ \end{cases} $$暴力展开每一项并计算积分的时间复杂度是 的。事实上,可以通过归纳法证明:
$$\int_0^1 \int_0^{x_1} \cdots \int_0^{x_{n-1}} x_1^{a_1} x_2^{a_2} \cdots x_n^{a_n} \, dx_n \cdots dx_1 = \prod_{k=1}^n \frac{1}{\sum_{i=k}^n (a_i + 1)} $$那么我们对于矩阵 ,按列从右往左扫来状压 DP,设 表示已经选完了后 列,并选了 中的行的系数之和,每次转移时 就是已知的。那么我们可以用 的时间复杂度算出 的方案数,将其与 的方案数乘起来即可。总时间复杂度为 。
>>
- 1
信息
- ID
- 11718
- 时间
- 3000ms
- 内存
- 1024MiB
- 难度
- 7
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者