专栏文章
Qoj2570. Maximal Subsequence
个人记录参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mindiepv
- 此快照首次捕获于
- 2025/12/02 00:38 3 个月前
- 此快照最后确认于
- 2025/12/02 00:38 3 个月前
Qoj2570. Maximal Subsequence
题目描述
给定一个包含 个整数的数组 。序列的美观度定义为该序列的最长递增子序列的长度。要求找出数组 的一个子序列,使得该子序列的美观度小于整个数组 的美观度,并且该子序列的长度尽可能大。
转化题意,找出子序列等价于在原序列上删数,所以问题等价于删去最少的数,使新序列的LIS长度减小。
首先,转化为最小割问题。设 表示以 结尾的LIS的长度。当 且 时, 可以放在LIS中,所以 向 连边。当 时, 向 连边,当 时, 向 连边。
考虑如何表示删点,将每个点拆开,变成 ,原来的建图变为 ,两个点之间连1,即 。
最小割值等于最大流,所以我们就要求出这张图的 的最大流。这就是选择尽可能多的 的路径。
考虑优化,有
结论1:设序列 是一个LIS,序列 是一个LIS, ,则 都是一个 LIS
如图,红色是一个LIS,黄色是一个LIS,绿色就是 ,也是一个LIS,下面三个点就是 ,也是 LIS。


所以,就可以设计算法:
每次只保留构成LIS的点。
每次我们就选绿色圈起来的部分,这一定是一条LIS,虽然在DP时我们的LIS会像橙色和紫色一样歪歪扭扭,但我们取绿色来算一定正确。注意每次删完绿色的点后原来保留下的点会不成立,也要删去。


相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...