AtCoder Beginner Contest 360 G - Suitable Edit for LIS 题解
前言
第一次场切 G(虽然被 after_contest 叉了),纪念一下。
思路
贪心地,考虑最优秀的操作一定是修改中间的一个元素,把左右两边的 LIS 接在一起。
于是可以预处理每个以每个下标 开头 / 结尾的最长 LIS 长度 和 ,然后枚举右边 LIS 开头的下标 ,代表修改 的值,则答案为 。
预处理和统计答案使用离散化 + 线段树优化 dp 实现即可,时间复杂度为 。
需要注意的是统计答案时,应先将 设为极小值, 设为极大值,这样就可以分别覆盖到左边的 LIS 为空和右边的 LIS 为空的情况,after_contest 叉的也就是这两种边界情况。
代码
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Misaka's Blog!
评论
re