欢迎光临 ~|

Laijinyi

园龄:1年7个月粉丝:2关注:2

P8776 最长不下降子序列 题解

Statement

最长不下降子序列(LIS),但是有一次机会,让序列中连续 k 个数改成同一个数。n105,ai106.

Solution

f(i) 为以 i 结尾的 LIS 长度,g(i) 为以 i 开始的 LIS 长度,可预处理.

答案一定是 f(i)+k+g(j) 这样拼接起来的,其中 i+k+1j,aiaj.

有人问我为什么?只需证“一定存在一种修改方式比不修改不劣”,考虑找出一个 LIS,然后在其中找一个数,把以他开头的 k 个数都修改为他,就一定不劣.

考虑把 i 从右往左移动,这时可选的 g(j) 数量每次增加 1,显然的考虑每次在 aj 位置插入 g(j) 然后求 [ai..mx] 区间最大值,做完了.

O(nlogm)m 为值域.

本文作者:Laijinyi

本文链接:https://www.cnblogs.com/laijinyi/p/18359233

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Laijinyi  阅读(13)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起