POJ 3686 & 拆点&KM

题意:

  有n个订单,m个工厂,第i个订单在第j个工厂生产的时间为t[i][j],一个工厂可以生产多个订单,但一次只能生产一个订单,也就是说如果先生产a订单,那么b订单要等到a生产完以后再生产,问n个订单用这m个工厂全部生产完需要最少的时间是多少。

 

SOL:

  与平时的带权二分图不同的是这个问题相当于一个多重匹配的问题,且每个点的权值需要考虑它之前的点,其实可以比如说每个工厂搞一个set什么的维护一下然后乱搞(不知道行不行看着好像挺好)。

  正这考虑不是很方便于是我们可以反着来,最后被生产的点只需要它自己的时间,当其在倒数第k个生产时,它的消耗就变成了k×t。那么我们就能把每个工厂拆成n个点,边权相应计算,跑一边KM即可。

  正难则反,这是非常有用的思想方法。

  打就不打了,图论的精髓在于建图,其它都是模板(做题无聊了bb一下还是需要的)。

  

  不以建图为前提地做图论题都是耍流氓。

posted @ 2016-02-19 14:29  YCuangWhen  阅读(140)  评论(0编辑  收藏  举报