[OI笔记] 最长上升子序列与网络流建模
与最长上升子序列相关的网络流问题:
给定一个序列 A[1..n] ,求出 A 的最长上升子序列长度。并且回答下列询问:
(1) 如果每个点只能用一次,能从 A 中取出几个最长上升子序列?
(2) 如果第 1 个点和第 n 个点可以用任意次,能从 A 中取出几个最长上升子序列?
(3) 如果每个点有一个删除代价 Bi ,最小需要花费多少代价,才能使 A 的最长上升子序列至少减少 1 ?
首先,最长上升子序列问题使用 DP 来求解,从后向前枚举 i ,求出 f[i] 表示以 i 为开头的最长上升子序列长度。最大的 f[i] 就是整个序列的最长上升子序列长度。
对于后续的 3 个问题,我们使用网络流求解:
对于序列中的每个点,我们将其拆成两个点 i 与 i' 。
对于每个 i ,如果 f[i] == Len(整个序列的最长上升子序列长度),我们就连边 S 到 i,如果 f[i] == 1,我们就连边 i' 到 T。
对于每个 i ,对于每个 (j > i) && (A[j] > A[i]) && (f[j] == f[i] - 1) ,我们从 i' 向 j 连边。
然后,我们对每个 i 到 i' 连边,并限制它的容量。如果所有的容量都限制为 1 ,就相当于每个点只能用一次。
这样,求出的最大流,就是能够取出的最长上升子序列个数。问题(1)
如果去掉 1->1' 和 n -> n' 的容量限制,就可以任意次使用这两个点。问题(2)
如果对于每个 i -> i' ,设置的容量限制为删除 i 点的代价,其余所有边都是正无穷的容量,那么就相当于,割掉一些 i 到 i' 的边。使得没有从 S 到 T 的路径且花费最少。
这样就是一个最小割模型了,还是求最大流。问题(3)
[OI笔记] 最长上升子序列与网络流建模的更多相关文章
- Libre 6005 「网络流 24 题」最长递增子序列 / Luogu 2766 最长递增子序列问题(网络流,最大流)
Libre 6005 「网络流 24 题」最长递增子序列 / Luogu 2766 最长递增子序列问题(网络流,最大流) Description 问题描述: 给定正整数序列x1,...,xn . (1 ...
- P2766 最长不下降子序列问题 网络流
link:https://www.luogu.org/problemnew/show/P2766 题意 给定正整数序列x1,...,xn . (1)计算其最长不下降子序列的长度s. (2)计算从给定的 ...
- Cogs 731. [网络流24题] 最长递增子序列(最大流)
[网络流24题] 最长递增子序列 ★★★☆ 输入文件:alis.in 输出文件:alis.out 简单对比 时间限制:1 s 内存限制:128 MB «问题描述: 给定正整数序列x1,-, xn. ( ...
- COGS731 [网络流24题] 最长递增子序列(最大流)
给定正整数序列x1,..., xn (n<=500).(1)计算其最长递增子序列的长度s.(2)计算从给定的序列中最多可取出多少个长度为s的递增子序列.(3)如果允许在取出的序列中多次使用x1和 ...
- 《算法导论》读书笔记之动态规划—最长公共子序列 & 最长公共子串(LCS)
From:http://my.oschina.net/leejun2005/blog/117167 1.先科普下最长公共子序列 & 最长公共子串的区别: 找两个字符串的最长公共子串,这个子串要 ...
- 【刷题】LOJ 6005 「网络流 24 题」最长递增子序列
题目描述 给定正整数序列 \(x_1 \sim x_n\) ,以下递增子序列均为非严格递增. 计算其最长递增子序列的长度 \(s\) . 计算从给定的序列中最多可取出多少个长度为 \(s\) 的递增子 ...
- 【PowerOJ1741&网络流24题】最长递增子序列问题(最大流)
题意: 思路: [问题分析] 第一问时LIS,动态规划求解,第二问和第三问用网络最大流解决. [建模方法] 首先动态规划求出F[i],表示以第i位为开头的最长上升序列的长度,求出最长上升序列长度K. ...
- codevs1906 最长递增子序列问题
题目描述 Description 给定正整数序列x1,..... , xn .(1)计算其最长递增子序列的长度s.(2)计算从给定的序列中最多可取出多少个长度为s的递增子序列.(3)如果允许在取出的 ...
- poj1836--Alignment(dp,最长上升子序列变形)
Alignment Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 13319 Accepted: 4282 Descri ...
随机推荐
- spring mvc 3.1的自动注入参数遇到的问题
在网上下载了xheditor作为页面的编辑器,编辑内容后post到后台保存,后台方法用spring mvc的自动注入的方式接收参数. 这种方式在各个浏览器下运行良好,但是在ie11下发现,从word. ...
- Windows Thrift安装及HelloWorld
Thrift是一个facebook开源的高效RPC框架,其主要特点是跨语言及二进制高效传输(除了二进制,也支持json等常用序列化机制),官网地址:http://thrift.apache.org 跨 ...
- Python入门学习教程:数据库操作,连接MySql数据库
各位志同道合的同仁可以点击上方关注↑↑↑↑↑↑ 本教程致力于程序员快速掌握Python语言编程. 本文章内容是基于上次课程Python教程:Python教程:连接数据库,对数据进行增删改查操作 和py ...
- eclipse上传显示svn上传者名
这里来记录下eclipse上传显示svn上传者名. 如图所示,修改即可.
- 达夫设备/达夫算法(Duff's Device)
主要是下面的代码: register n = (count + 7) / 8; /\* count > 0 assumed \*/ switch (count % 8) { case 0: ...
- 20160408javaweb之JDBC ---PreparedStatement
PreparedStatement 1.Sql注入:由于jdbc程序在执行的过程中sql语句在拼装时使用了由页面传入参数,如果用户恶意传入一些sql中的特殊关键字,会导致sql语句意义发生变化,这种攻 ...
- Asp.net笔记(原创)
Repeater控件的使用:<asp:Label ID="Label1" runat="server" Text='<%#Eval("na ...
- 16_MyBatis中期小结
[MyBatis是什么] MyBatis是一个持久层框架,Mybatis是一个不完全的ORM框架,SQL语句需要程序员自己去编写,但是MyBatis也有映射(输入参数映射.输出结果映射). MyBat ...
- Codevs 3990 中国余数定理 2
3990 中国余数定理 2 时间限制: 1 s 空间限制: 1000 KB 题目等级 : 白银 Silver 传送门 题目描述 Description Skytree神犇最近在研究中国博大精深的数学. ...
- jdk环境变量配置(总结)
进行java开发,首先要安装jdk,安装了jdk后还要进行环境变量配置: 1.下载jdk(http://java.sun.com/javase/downloads/index.jsp),我下载的版本是 ...