题意:
给定正整数序列 x 1 , . . . , x n x_1,...,x_n x1,...,xn
(1)计算其最长不下降子序列的长度 s s s。
(2)计算从给定的序列中最多可取出多少个长度为s的不下降子序列。
(3)如果允许在取出的序列中多次使用 x 1 x_1 x1 和 x n x_n xn,则从给定序列中最多可取出多少个长度为 s s s 的不下降子序列。
分析
第一问,普及组问题。
第二,三问,要用网络流解决。
第二问
建立超级源点 S S S 和超级汇点 T T T
我们为了让 S S S 到 T T T 的路径是一条满足长度为 s s s 的最长不下降子序列,于是要将 f j = f i + 1 f_j=f_i + 1 fj=fi+1 的 i i i 向 j j j 连一条边。这样子从 s s s 到 t t t 的一个流表示的是一个长度为 s s s 的最长不下降子序列。
可问题来了,每个点只能走一次,这个怎么解决呢?
有一个常用的技巧,就是将点变成边,