1 条题解
-
0
题解
思路
设 为以 结尾的最长不下降子序列长度, 为以 开始的最长不下降子序列长度。若修改段左右分别选择了下标 ,则必须有 且 ;把中间连续 项改成介于二者之间的值后,可得到 。还要考虑只选择修改段一侧的情形。
做法
时枚举修改段和修改值,再求 LNDS。 时二次 DP 求 ,并枚举左右端点。
完整算法对值离散化,用 Fenwick 树分别求 。扫描右端点 时,把恰好满足 的左端点加入另一棵 Fenwick 树,按值前缀查询所有 中最大的 。同时单独计算只有左侧或只有右侧的答案。
复杂度
完整算法时间复杂度 ,空间复杂度 。
正确性证明
任意最优方案若同时选择修改段两侧元素,令 为所选左右最近元素,则间隔至少容纳 个被修改位置,且非下降性要求 。左右部分最多分别贡献 ,故长度不超过转移值;反之取任意满足条件的 并选取区间内的 ,该长度可以实现。只选择一侧的情况由边界转移覆盖,所以算法取到且不超过最优答案。
- 1
信息
- ID
- 985
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者