网络流24题

经典问题,做了一部分

太水的就不记录了

 

最大流是对于一种完整的匹配的处理,一条路一个贡献。要求匹配尽可能多。

费用流是对于一个路径的最值的处理,每条边自己的费用。再匹配最多前提下,匹配的费用达到最值。

 

难点就是对于条件状态的设计

1.

[网络流24题]餐巾计划问题——费用流建模

考虑每天一定有ri条脏毛巾,所以脏毛巾和干净毛巾分开处理。

 

2.

最长不下降子序列问题 

怎样规定一定选择了长度为最长的s的?

起始点一定f[i]=1,终止点一定f[i]=s!

然后拆点覆盖

可以选择多次就1,n的容量是inf

 

3.

航空路线问题 

看似是环,由于知道一定经过1,n,所以就是1到n的两条不相交的路径了

但是经过的点是哪些不知道还要最大化。但是知道两条路的起点终点。

所以直接最大费用最大流了。

(星际竞速那个题,不知道起点终点,但是知道所有的点都经过一遍,所以可以S到出点到T,入点到出点)

找方案,dfs两遍,对边打标记

由于(1,n)的边可以走两次,所以加入两次(1,n)的边。

 

4.

最长k可重区间集问题

和平常思路不太一样的建模

发现最小割办不了不能同时相交k个的限制,

然后考虑费用流处理最优化问题

但是k个相交怎么办?

最大流来限制!利用分流和汇流

离散化,S-1(k,0); i-i+1(k,0) ; 2n-T(k,0),代表同时最多可以重k次

区间:L-R(1,len),流量为1的道理是,限制同一时间已经占用了一个坑位,之后只能少选择一个

汇流的时候,也满足一个区间结束了,一个坑位空出了。

最大费用最大流即可。

(原来的费用流中最大流都是为了把要求选择的都选上,但是这里恰好是利用,"最大是这么多"的限制!)

 最长k可重线段集问题

投影,二维变成一维,但是(l,l)的点不能体现选择一次,拆点,注意是开区间。是否包含处理好即可。

 

原文地址:https://www.cnblogs.com/Miracevin/p/10609257.html