各大竞赛中不乏有许多网络流建模的题,而对于像我(= =)这样的蒟蒻来说可谓是一道题一种解法,还是”老题随便A,新题永不会“的态度,故开此帖来总结一些网络流建模的模型吧,不断更新。
1.分配问题:顾名思义,将一个集合分解为若干个小集合的题目。
常见套话:"现在我们有一批物资要通过一些道路运往某地。。。","每一场比赛可以为总比分提供两分,可以是每队一分(平局),或者是2-0(一队胜出)。。。","一块蛋糕,现在有n个厨师来了,每人可以切几份。。。"这些问题的本质都是分配问题。
典型例题:COJ0503
解题思路:事实上,我们引出的弧就包含了我们分配的原则,对于分配合理的弧,我们不妨从以下几个角度来思考:
1.分配的上限:拿例题说事:对于每一场比赛我们都可以分配出两个积分,对于每一场比赛我们看作是一个点,那么合理的分配方案只是分出两分不会多也不会少,那么对于每一场比赛,我们只要在最开始给流的时候就只给2流量就保证了它的上限,下限可以通过其他办法解决。这种在源点控制流量(容量)限定某一单位分配上限的方法我们可以称之为是"控源",控源可以帮助我们确定分配的上限。
2.分配的对象:还是例题:对于每一场比赛我们都只能将积分分给两支队伍,那么我们只需要将每个队伍看作是一个点,比赛分配积分就可以抽象为一个比赛节点向两个队伍节点分配这2个流量,我们要做的只是确保流量能够经过它们就行,所以我们建无容量上限的连接比赛和两支队伍的弧来完成流量的传递。这种通过引无容量上限的弧来确保流量连接从而解决分配问题的方法我们可以称之为是"引流",引流可以帮助我们确定分配的对象。
注意:引流的关键词是"简洁、清晰",复杂的建模中一个非常好的引流是至关重要的,瞎引来引去会完全破坏设计初衷。
如果在引流中发现互相影响我们就要果断拆点,可以看POJ 2391。
2.限制问题:顾名思义,求解一个约束系统的问题。
常见套话:"现在我们能不能满足这些分配的合理性呢。。。"
解题思路:限制问题往往是其他问题的处理,常常配合二分法、计数法等使用。我们可以先针对"分配问题的合理性"展开讨论:
满流分配:满流分配是指算出来的流量与分配总量相等,通常如果这样就保证了完全分配的合法性;当然了,具体问题要具体分析。
我们预计的分配数可以记为"标准量",实际的最大流可以记为"实流量",那么满足满流分配当且仅当标准量=实流量。
3.动态流问题:就是在原图上一点点增加边的问题。
常见套话:各种时间,可以逗留这样的。。。
典型例题:SGU0483
解题思路:通常都是对时间进行枚举,构造分层网络,然后变成限制问题。
网络流还是要多多A题才能有体会吧,不断更新。
转载请注明出处http://www.cnblogs.com/chxer/,谢谢!chxer