[题解]SDOI2014LIS
Posted wuzewen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[题解]SDOI2014LIS相关的知识,希望对你有一定的参考价值。
题意
给你一个序列,每个位置有权值 $A[i] , B[i] , C[i]$。
你需要删除一些点,每次删除点的代价为$B[i]$,使得$A[i]$的最长上升子序列至少下降1,并使得代价最小。若代价相等,选择有关C的字典序最小的组合。
n<=700
------------
solution
可以预先求出每个点的的$f[i]$,表示当前点为结尾的LIS。
显然,所有的$(i<=j)$且$a[i]<=a[j]$且$f[i]==f[j]-1$的$i$可以转移到$j$。
我们拆点后连边就是把$OUT[i]$连向$IN[j]$,代价为$INF$。而$IN[i]$到$IN[j]$连接的是一条为$b[i]$的边,表示去掉这个点代价为$b[i]$。
然后$S$向所有$f[i]==1$的$i$连$INF$ , 所有$f[i]==mx$的$i$向$T$连$INF$,跑最小割,这样就是使得至少下降$1$的最小代价。
至于输出方案?
见[网络流]一些算法之外的东西。
以上是关于[题解]SDOI2014LIS的主要内容,如果未能解决你的问题,请参考以下文章