摘要:
在Acm竞赛中,网络流中求最大流的主流算法有Dinic和Isap,那么这两种算法究竟选哪种好,有些人说Dinic稳定,有些人说Isap效率高,还有人说卡Dinic的题目都是不人道的。为此我分别测试了一下他们的效率。 测试的题目是POJ3469,题目的测试数据足以分辨这两个算法的效率了,所提交的语言为G++。 下面是Dinic的,没有加当前弧优化,用时5469ms。Dinic-没有当前弧优化 1 //STATUS:G++_AC_5469MS_8456KB 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<stri 阅读全文
摘要:
题目链接:http://poj.org/problem?id=3469 题目的意思是这样的:有n个任务要处理,现在有一个双核心的CPU,每个任务可以在其中一个核心被完成且需要一定代价,其代价分别为Ai和Bi,如果某些任务在不同的核心上处理,可能需会要需要进行数据交换,即第a个任务和第b个任务为w(a,b,w)。现在要你分配这n个任务,使得所需的代价最小。 开始看到这个题目的时候以为是最小费用流,于是建图建了半天,也没建出来,后来看了下Discuss,才发现是最小割!关键还是在建图上:把每个任务看做点,加源点s和汇点t,从s向每个任务点建立单向边,容量为Ai。从每个任务点向t建里单向边,... 阅读全文