首页 > 其他分享 >ABC378G 官方题解 ChatGPT 4.0 翻译

ABC378G 官方题解 ChatGPT 4.0 翻译

时间:2024-11-02 22:12:02浏览次数:1  
标签:4.0 题解 LDS 方格 ABC378G LIS 序列 长度 ldots

题目描述

给定整数 \(A\)、\(B\) 和 \(M\)。

有多少种排列 \(P = (P_1, \dots, P_{AB-1})\) 满足以下所有条件?请将结果对 \(M\) 取模。

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

题解

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

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

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

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

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

  • \(t'_{1,A} = n + 0.5\),
  • \(t'_{i+1,A} = t_{i,A} \ (1 \leq i \leq B-1)\)。

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

  • \(t_{i,A} > t_{i+1,A-1} \ (1 \leq i \leq B-1)\)。

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

  • \(t\) 包含从 \(0\) 到 \((AB-1)\) 的所有整数,
  • \(t_{i,j} < t_{i+1,j}\),
  • \(t_{i,j} < t_{i,j+1}\),
  • \(t_{i+1,A-1} < t_{i,A}\)。

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

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

思路解释

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

标签:4.0,题解,LDS,方格,ABC378G,LIS,序列,长度,ldots
From: https://www.cnblogs.com/SkyMaths/p/18522544

相关文章

  • AtCoder Beginner Contest 378题解
    省流:dfs都会写错。正片:A:Pairing统计一下每个数字出现了多少次即可,每次减去2。#include<bits/stdc++.h>usingnamespacestd;inta,b,c,d,ans;map<int,int>mp;intmain(){ cin>>a>>b>>c>>d; mp[a]++,mp[b]++,mp[c]++,mp[d]++; while(mp[a]>=2)mp[a......
  • AtCoder Beginner Contest 378题解
    AtCoderBeginnerContest378题解总体情况十分钟翻盘局。A-Pairing题意有四个球,每次可以消掉两个颜色相同的球,问最多能效多少次?题解直接使用贪心即可代码//Problem:A-Pairing//Contest:AtCoder-AtCoderBeginnerContest378//URL:https://atcoder.j......
  • 2024CCPC哈尔滨 L 题解
    思路首先可以发现这个期望其实是假的,我们只需要把所有方案的答案加起来,最后除以\((\frac{n(n-1)}{2})^2\)即可,现在考虑如何统计所有方案的答案。我们先考虑一条路径的方案数:假设存在一条从\(x\)到\(y\)的公共路径,其中\(x\)是\(y\)的祖先,那么小红和小蓝分别选择的路径,......
  • 第八届御网杯线下赛Pwn方向题解
    由于最近比赛有点多,而且赶上招新,导致原本应该及时总结的比赛搁置了,总结来说还是得多练,因为时间很短像这种线下赛,一般只有几个小时,所以思路一定要清晰,我还是经验太少了,导致比赛力不从心,先鸽了~Skillchecksec检查保护(没有开PIE和Canary)ida逆向分析一下不同的选项对应不......
  • Codeforces Round 983 (Div. 2) 题解
    CodeforcesRound983(Div.2)题解CodeforcesRound983(Div.2)Problem-A-Codeforces解题思路考虑贪心,每个灯连两个开关,即两个开的灯可以关闭一盏灯,则灯数最多则尽可能让两个开关都开的灯尽量少,灯数最少则反之#include<bits/stdc++.h>#defineendl'\n'usingnam......
  • 线段树也能是 Trie 树 题解
    题意简述给定一个长为\(n=2^k\)的序列\(\{a_0,\ldots,a_{n-1}\}\),你需要使用数据结构维护它,支持\(m\)次以下操作:单点加:\(a_x\getsa_x+y\);区间查:\(\sum\limits_{i=l}^ra_i\);全局下标与:\(a'_{i\operatorname{and}x}\getsa_{i}\),即把\(a_i\)累加到......
  • 动态规划题解报告
    [APIO2016]划艇注意到\(n\le500\)考虑\(O(n^3)\)的做法。值域小的做法比较显然,值域比较大,考虑离散化(将\(b_i+1\)然后限制变为\([a_i,b_i+1)\))。设\(f_{i,j}\)表示考虑前\(i\)个,\(i\)选择\(j\)的方案数。发现由于离散化了很难转移\(f_{k,j}\(k<i)\)的情况......
  • 关于Copilot出现:You don`t have access to Github Copilot .....的问题解决方案
    前面如何如何配置,以及如何如何上传学生证资料等我这里不赘述badendinghappyending出现这个界面这个问题就是set_up不是很完全,设置一下就行disable改为enable等这样再回去IDE,就可以正常使用了......
  • 牛客周赛 Round 65 题解
    牛客周赛Round65牛客周赛Round65A-超市_牛客周赛Round65#include<bits/stdc++.h>#defineendl'\n'usingnamespacestd;voidsolve(){ intn,a,b;cin>>n>>a>>b; intans=0; for(inti=0;i<=100;i++){ for(intj=0;j<=100;j++){......
  • P3780 苹果树 题解
    传送门夏天近了,又到了恋爱的季节,小Q家门前的苹果树上结满了红红圆圆的苹果。这株苹果树是一个有着\(n\)个结点的有根树,其中结点被依次编号为\(1\)至\(n\)。\(1\)号结点为根,其余每一个结点的父结点一定是某个编号较小的结点。每一个结点上都有一些苹果,第\(i\)个结点上有\(a_i(a_......