03 2013 档案
摘要:http://poj.org/problem?id=3422最小费用最大流 求的时候把边加为负的 输出的时候再负回来 就变成求的最大费用了拆点 一个点拆为 i i' i->i'连两条边 一条cap为0 cost为给出的值 另一条cap为INF cost为0,i'到右和下分别设置一条边cap为INF cost为0设置超级源点到1节点 cap为K cost为0View Code 1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<alg
阅读全文
摘要:http://poj.org/problem?id=2195模板题 超级源点-》men->house->超级汇点 坐标差值为两点的cost值 cap为1View Code 1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<queue> 6 #include<stdlib.h> 7 #define INF 0xfffffff 8 using namespace std; 9 s
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=3308注意两个地方 向上更新 和查找的时候向上更新1.左儿子最右边的值<右儿子最左边的值lMax=(左儿子的lMax==左儿子的len)?左儿子的len+右儿子的lMax:左儿子的lMax;rMax=(右儿子的rMax==右儿子的len)?右儿子的len+左儿子的rMax:右儿子的rMax;Max=MAX(左儿子的rMax+右儿子的lMax,左儿子的Max,右儿子的Max,lMax,rMax);2.左儿子最右边的值>=右儿子最左边的值lMax=左儿子的lMax;rMax=右儿子的rMax;Max=
阅读全文
摘要:http://poj.org/problem?id=2516建图的时候 有个地方写错了 卡了半年。。题意看了N久啊 有N个店主需要K种物品 有M个供应点 每个供应点有K种物品 其实是算K次最小费用 然后叠加 分解开来这题就是求把某种物品从供应点送到店主那里多个源点-》多个汇点 所以加一个超级源点 和 超级汇点 源点->M个供应点->N个店主->汇点 所以共有m+n+2条边 套最小费用模板就行了View Code 1 #include <iostream> 2 #include<cstring> 3 #include<cstdio> 4 #i
阅读全文
摘要:转自pony1993网络流的费用: 在实际应用中,与网络流有关的问题,不仅涉及流量,而且还有费用的因素。网络的每一条边(v,w)除了给定容量cap(v,w)外,还定义了一个单位流量费用cost(v,w)。对于网络中一个给定的流flow,其费用定义为: 最小费用最大流问题 给定网络G,要求G的一个最大用流flow,使流的总费用最小。求解MCMF问题的算法: 在这里各种算法的证明以及原理的详解不再赘述,仅仅介绍算法的过程。相关内容感兴趣的同学可以自己去搜索资料。 最小费用最大流最常用和基本的算法我们可以称它为最小费用路算法,其思想与求最大流的增广路算法类似,不断在残流网络中寻找从源s到汇t的最小费
阅读全文
摘要:Ahttp://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2089去掉最高最低 算平均View Code 1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<stdlib.h> 5 #include<algorithm> 6 using namespace std; 7 double a[10]; 8 int main() 9 {10 int i,j,k
阅读全文
摘要:http://poj.org/problem?id=1275黑书上详解今天犯了2了 交了十几次 查错查了几个小时 最后与别人的代码比对 输入有问题 n是组数 受不了View Code 1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<stdlib.h> 5 #include<queue> 6 #define INF 0x3f3f3f 7 using namespace std; 8 int n,m,g,t[30],r[30],ans,dis[
阅读全文
摘要:http://poj.org/problem?id=1364WA了n次啊 一个a和b写反了。。无语了题意好难懂 aSi + aSi+1 + ... + aSi+ni < ki or aSi + aSi+1 + ... + aSi+ni > ki 为了得到差分约束不等式 令sum[ni] = asi+asi+1+。。+asi+ni上式就可变为 sum[ni+si]-sum[si-1]<=ki+1(sum[si-1]-sum[ni+si]>=-ki-1) or sum[ni+si]-sum[si-1]>=ki-1bellford 判负环 即判断这些不等式能不能成立Vi
阅读全文
摘要:http://poj.org/problem?id=1201设si[i+1]表示有不超过i的Z集合里面的数的个数,可以列出不等式si[b+1]-si[a]>=ci另有隐含条件 si[i+1]-s[i]>=0 si[i]-s[i+1]>=-1 利用spfa求出最长路View Code 1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<stdlib.h> 5 #include<queue> 6 using namespace s
阅读全文