1 条题解
-
0
思路
令 。原数组严格递增,等价于变换后的数组 不下降。固定位置不能修改,因此相邻两个固定位置 必须满足 ,否则无解。
在两个相邻固定位置之间,只能保留值落在 内、并且按下标组成不下降子序列的元素。其余元素都要修改。于是问题转化为在每个区间中求受上下界限制的最长不下降子序列。
做法
在固定位置序列两端加入虚拟位置 和 ,对应的变换值分别为负无穷和正无穷。逐段处理相邻固定位置。
若左端变换值大于右端,直接输出 。否则扫描区间内部,只把位于端点值域内的 加入序列。用耐心排序维护数组 :对每个值 ,在 中找到第一个严格大于 的位置并替换;若不存在则追加。最终 的长度就是该段最长不下降子序列长度,用区间长度减去它即可得到该段最少修改数。
正确性证明
任何保留的元素都必须与两端固定值共同构成不下降序列,所以它的变换值必须在端点值域内,且所有保留元素必须按下标不下降。反之,任取满足这些条件的不下降子序列,其余位置总能在相邻保留值之间选择整数完成不下降序列,对应回原数组即为严格递增数组。
因此,一段中能不修改的最多元素数恰为受限最长不下降子序列长度,区间长度减去它就是该段最少修改数。各段只通过固定端点相连,求和得到全局最少操作数。
复杂度
每个元素进行一次二分查找,时间复杂度为 ,空间复杂度为 。
- 1
信息
- ID
- 1252
- 时间
- 2000ms
- 内存
- 512MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 0
- 上传者