本节的主题是 flow network,只有一道题用到了朴素的最大流算法。

Drainage Ditches (ditch)

此题是一个最基本的最大流问题,可以用基于Ford-Fulkerson的Edmonds-Karp算法。

Ford-Fulkerson(G,s,t)
1 .for each edge(u,v)∈E[G]
2.     do f[u,v]=0
3.          f[v,u]=0
4.while there exists a path p from s to t in the residual network Gf
5      do cf(p)←min{ cf(u,v) : (u,v)is in p}
6.for each edge(u,v) in p
7.     do f[u,v]=f[u,v]+cf(p)
8.         f[v,u]=-f[u,v]

Edmonds-Karp


The Perfect Stall (stall4)
二分图匹配,可以用最大流做,也可以用匈牙利匹配算法。关于匈牙利匹配,详见http://www.cppblog.com/RyanWang/archive/2008/11/16/67054.html
Hungary



Job Processing (job)
首先讲a和b分开考虑,单独用贪心算法可以分别求出单独操作a和b的最短时间------best=min(start[i]+time[i]).start[i]=best;不断更新n次。然后a中最先完成的物品放在b中操作时间最长的机器上可以达到最优策略。
CODE

Cowcycles (cowcycle)
qinz是这样说的:“这题很有趣,数据范围很吓人,如果无视数据范围谁都知道这是一道枚举题,重点在于计算上的一些优化。据说除法比乘法慢多了所以尽量不用除法就不要用了,而且里面会有很多重复的除法运算,所以我把数据范围可能用到的除法都先打表出来,div[i][j]=i/j,还有几个运算时用到频率特别高的常量也先计算好,如r*f、1/(r*f-1)。其中最无奈的一个优化是排序算法的选择!我用qsort在第五个数据过不去,但用冒泡居然过了,最后用sort更快,最慢的数据为0.7s(不知道这样是快是慢)。结论是,我该从qsort转移到sort了,STL确实很优秀。”