网络流总结(三)费用流

关于最小费用最大流

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


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,考虑边增广边加边:

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

原文地址:https://www.cnblogs.com/AthosD/p/12006094.html