2011年9月14日
摘要: 题意:双核电脑处理任务。每个任务在每个核中处理的cost已知,并且已知如果某两个任务在不同核时的extra cost。思路:最大流最小割。难点在于构图。构图时,把核A作为源点,把核B作为汇点。任务作为中间节点。cost作为单向边。特别地,对于“如果某两个任务在不同核时的extra cost。”作为两个任务的双向边。这样构成的图用dinic求最大流。结果则是答案。不得不感慨最大流真是好用。#include<iostream> #include<string> using namespace std; const int N=20015,M=200015; const in 阅读全文
posted @ 2011-09-14 19:31 不是我干的 阅读(268) 评论(0) 推荐(0)
摘要: zzhttp://blog.sina.com.cn/s/blog_61533c9b0100iawn.htmlDinic算法是基于分层思想的网络流算法,它的的效率一般比E-K算法高算法的思想:Dinic是在分阶段地在层次图中增广。它与最短路径增值算法不同之处是:在Dinic算法中,我们用一个dfs过程代替多次bfs来寻找阻塞流。下面给出其算法步骤:1、初始化流量,计算出剩余图 2、根据剩余图计算层次图。若汇点不在层次图内,则算法结束 3、在层次图内用一次dfs过程增广 4、转步骤2算法模板://时间复杂度O(V^2E) #include<iostream>#define Max 21 阅读全文
posted @ 2011-09-14 17:35 不是我干的 阅读(982) 评论(0) 推荐(0)