1 条题解

  • 0
    @ 2026-9-3 10:36:24

    思路

    令 ci=ai−ic_i=a_i-i。原数组严格递增,等价于变换后的数组 cc 不下降。固定位置不能修改,因此相邻两个固定位置 l<rl<r 必须满足 cl≤crc_l\le c_r,否则无解。

    在两个相邻固定位置之间,只能保留值落在 [cl,cr][c_l,c_r] 内、并且按下标组成不下降子序列的元素。其余元素都要修改。于是问题转化为在每个区间中求受上下界限制的最长不下降子序列。

    做法

    在固定位置序列两端加入虚拟位置 00 和 n+1n+1,对应的变换值分别为负无穷和正无穷。逐段处理相邻固定位置。

    若左端变换值大于右端,直接输出 −1-1。否则扫描区间内部,只把位于端点值域内的 cic_i 加入序列。用耐心排序维护数组 dd:对每个值 xx,在 dd 中找到第一个严格大于 xx 的位置并替换;若不存在则追加。最终 dd 的长度就是该段最长不下降子序列长度,用区间长度减去它即可得到该段最少修改数。

    正确性证明

    任何保留的元素都必须与两端固定值共同构成不下降序列,所以它的变换值必须在端点值域内,且所有保留元素必须按下标不下降。反之,任取满足这些条件的不下降子序列,其余位置总能在相邻保留值之间选择整数完成不下降序列,对应回原数组即为严格递增数组。

    因此,一段中能不修改的最多元素数恰为受限最长不下降子序列长度,区间长度减去它就是该段最少修改数。各段只通过固定端点相连,求和得到全局最少操作数。

    复杂度

    每个元素进行一次二分查找,时间复杂度为 O(nlog⁡n)O(n\log n),空间复杂度为 O(n)O(n)。

    • 1

    信息

    ID
    1252
    时间
    2000ms
    内存
    512MiB
    难度
    10
    标签
    递交数
    1
    已通过
    0
    上传者