zoukankan      html  css  js  c++  java
  • 网络流总结(三)费用流

    关于最小费用最大流

    这里的最小费用最大流是在最大流的基础上把费用最小化


    Ek费用流

    因为会有负边权,所以需要用Spfa求出最小费用,之后Ek一发就好

    代码还是不放了吧


    ZKW费用流

    和Dinic几乎一样,就是在dfs的时候记一个vis数组即可,否则出0环就写比了

    ZKW费用流在层数较少的时候会很快,比如无限之环这道题:

    Ek费用流8000ms,zkw费用流100ms

    代码也咕了


    T1晨跑

    题目描述

    Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑、仰卧起坐等 等,不过到目前为止,他坚持下来的只有晨跑。 现在给出一张学校附近的地图,这张地图中包含N个十字路口和M条街道,Elaxia只能从 一个十字路口跑向另外一个十字路口,街道之间只在十字路口处相交。Elaxia每天从寝室出发 跑到学校,保证寝室编号为1,学校编号为N。 Elaxia的晨跑计划是按周期(包含若干天)进行的,由于他不喜欢走重复的路线,所以 在一个周期内,每天的晨跑路线都不会相交(在十字路口处),寝室和学校不算十字路 口。Elaxia耐力不太好,他希望在一个周期内跑的路程尽量短,但是又希望训练周期包含的天 数尽量长。 除了练空手道,Elaxia其他时间都花在了学习和找MM上面,所有他想请你帮忙为他设计 一套满足他要求的晨跑计划。

    输入格式

    第一行:两个数N,M。表示十字路口数和街道数。
    接下来M行,每行3个数a,b,c,表示路口a和路口b之间有条长度为c的街道(单向)。N ≤ 200,M ≤ 20000。

    输出格式

    两个数,第一个数为最长周期的天数,第二个数为满足最长天数的条件下最短的路程长 度。

    其实就是限制每个点只能经过一次,拆点限流即可


    T2修车

    题目描述

    同一时刻有N位车主带着他们的爱车来到了汽车维修中心。维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的。现在需要安排这M位技术人员所维修的车及顺序,使得顾客平均等待的时间最小。 说明:顾客的等待时间是指从他把车送至维修中心到维修完毕所用的时间。

    输入格式

    第一行有两个m,n,表示技术人员数与顾客数。
    接下来n行,每行m个整数。第i+1行第j个数表示第j位技术人员维修第i辆车需要用的时间T。

    输出格式

    最小平均等待时间,答案精确到小数点后2位。

    我们发现每个车的贡献系数等于它的修车师傅倒数第几个修它

    所以考虑把每个修车师傅拆成n个点,代表这个人倒数第几个修的车,问题便迎刃而解了


    T3数字配对

    本题沿用BZOJ3158的思路,由于质因子个数(一个质数可能算多次,设其为f[i])差1才会对答案产生贡献

    所以可以按f[i]奇偶性分成两个部分,部分之间连边,跑最大费用最大流直到再增广费用变为负


    T4美食节

    与修车思路类似,直接做会T,考虑边增广边加边:

    对于每个厨师当前点用完了再去加下一个点,便可以通过本题

  • 相关阅读:
    LeetCode 123. Best Time to Buy and Sell Stock III (stock problem)
    精帖转载(关于stock problem)
    LeetCode 122. Best Time to Buy and Sell Stock II (stock problem)
    LeetCode 121. Best Time to Buy and Sell Stock (stock problem)
    LeetCode 120. Triangle
    基于docker 搭建Elasticsearch5.6.4 分布式集群
    从零开始构建一个centos+jdk7+tomcat7的docker镜像文件
    Harbor实现容器镜像仓库的管理和运维
    docker中制作自己的JDK+tomcat镜像
    docker镜像制作---jdk7+tomcat7基础镜像
  • 原文地址:https://www.cnblogs.com/AthosD/p/12006094.html
Copyright © 2011-2022 走看看