zoukankan      html  css  js  c++  java
  • POJ 3686 & 拆点&KM

    题意:

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

    SOL:

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

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

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

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

      

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

    Sometimes it s the very people who no one imagines anything of. who do the things that no one can imagine.
  • 相关阅读:
    go基础第六篇:依赖管理
    go基础第五篇:并发
    go基础第四篇:error、panic、recover
    go基础第三篇:结构体、函数、方法、接口
    docker第二篇:docker compose
    docker第一篇:docker概念及基础命令
    编辑距离
    常见安全漏洞
    go基础第二篇:类型
    go基础第一篇:基本语法
  • 原文地址:https://www.cnblogs.com/YCuangWhen/p/5200923.html
Copyright © 2011-2022 走看看