[题解]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的主要内容,如果未能解决你的问题,请参考以下文章

题解SDOI2014旅行

题解 P3317 [SDOI2014]重建

每日题解 #12P3312 [SDOI2014]数表

题解SDOI2014数数

[Sdoi2014]旅行 题解

[luoguP3317] [SDOI2014]重建(矩阵树定理)