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

KingPowers
重开了搬运于
2025-08-24 22:38:56,当前版本为作者最后更新于2025-01-06 16:08:56,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
考虑一个重排后的排列应该长什么样子,不妨固定住一对 满足 ,要求就是不能同时存在 使得 和 ,换句话说也就是 里至少要有一个是区间 的最值。
换个角度看,假设一开始有 到 这些数,要把它们排成一个合法的排列,就要求每次必须把当前的最大值/最小值插到当前没被插入数的最靠前/最靠后的位置,排列合法当且仅当每一步都满足这个条件,而我们希望最大化插入过程中与原排列重合的位置数量。
然后就有个暴力的区间 dp 做法,可以设 表示区间 以外的部分已经填完,当前剩下的最大值为 时区间内最大的重合位置数量,转移直接枚举在左右端点填最大/最小值四种情况是 的,所以得到了一个 的做法,可以通过 分。
继续优化,考虑在二维平面的角度上看这个问题。因为新排列一个区间内的数在值域上肯定是连续的,把 看成平面上的点 ,那么对于 的一个区间 能包住区间内的点的最小矩形就是 的这么一个矩形,其中 分别是区间内的最小值和最大值。而因为每次只会填左右端点的一个最值, 那么填完之后剩下的子区间对应的矩形 的变化量只有 ,也就是说每次会删去当前矩形边缘的一个 L 形。而初始时整个排列对应的矩形显然是 这么个大正方形,所以每个区间对应的矩形也都应当是个正方形。
对于一个 来说,它与新的排列重合相当于是 作为了某个区间对应正方形的四个顶点之一。考虑到所有以 为顶点的正方形其对应的另一个顶点坐标都形如 (正负号对应了四个方向),对每个 都把这种正方形找出来,发现问题其实可以转化为:平面内有 个正方形,你需要选择尽可能多的正方形使得它们之间是严格包含的关系。这是因为对于选出来的这些正方形,因为只有包含关系,我们一定能构造出一组方案使得这些正方形同时出现过,每出现过一个就多一个位置不需要交换,所以答案就是 减去最多选出的正方形个数。
设 表示 向 方向延伸出的长度为 的正方形(),最多包含几个其它的正方形,转移考虑从满足 的 转移,分类讨论不同方向之间的正方形成包含关系的条件,能够把转移限制表示成二维偏序,这个 dp 能够做到 ,但是本身 就 而且常数太大了肯定过不去。
发现题目里还有随机排列的条件没有用,可以感受到随机排列的情况下能够选出的正方形不会太多,改成设 表示 向 方向的正方形要包含 个其它的正方形,最小的边长是多少,转移同样可以分类讨论变成二维偏序。一个结论就是 这一维的大小是 级别的,大概就是与随机排列的 LIS 长度是同阶的,所以这样就能做到 ,可以通过。
这里补充下具体怎么把转移写成二维偏序,假设我们现在要对 进行转移,考虑之前 时的一个矩形 ,那么首先要满足的条件就是 且 ,转移过来后正方形的长度当 也就是 的时候是 ,否则是 。注意到,如果满足 那么当 时就天然满足了 ,同理如果满足 那么当 的时候也天然满足了 ,因此转移的贡献也是可以确定住的,跑两遍二维偏序即可。对于 为其它数的情况可以类似的讨论处理,这样对每层 转移是跑八遍二维偏序,比较唐,但是我也不会其它更好的做法。
代码是贺的,不放了。
- 1
信息
- ID
- 7800
- 时间
- 7000ms
- 内存
- 1096MiB
- 难度
- 7
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者