摘要: 这题用贪心法做的,每个任务都从现有的machine里面拿运行结束最早的机器里执行。唯一需要写的是:用执行最快的arrJobDoneA 和 执行最慢的arrMachineDoneB相结合,第二快的A和第二慢的B相结合...最后这N个里面时间最长的那个就是所有任务全部执行完成的最长用时。代码比较简单,如下:/*ID: zhangyc1LANG: C++TASK: job*/#include <fstream>#include <iostream>#include <cstdlib>#include <cstring>using namespace s 阅读全文
posted @ 2013-03-19 12:18 J.Z's World 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 这题还是可以用最大流。只要添加一个源点和一个汇点,并添加源点至牛,汇点至各牧场的边即可转化为标准的最大流不过,关于二分匹配有专用的算法,匈牙利算法,本质上来说,匈牙利算法应该属于XXX-XXX方法,就是添加增广路径的那个。只不过在二分匹配里面的增广路径是有特点的----它是一个交错路径(从起点算起1..2k+1,第奇数条边为非匹配的边,第偶数条边为匹配过的边)。交错路的搜索可以bfs,也可以dfs。 dfs写起来比较简单,bfs则需要记录前驱从而在搜索成功后回溯匹配过程。第一次提交时,我用的dfs在test8时超时了,原因与dfs代码中被我注释掉的那句有关。改了之后提交OK,又顺便试了一下bf 阅读全文
posted @ 2013-03-19 12:09 J.Z's World 阅读(191) 评论(0) 推荐(0) 编辑