2012年6月2日
摘要: 以下是其具体分类及用法(若无具体说明是以降序排列):1、对一维数组排序:(Element_type是一位数组中存放的数据类型,可以是char, int, float, double, etc )使用qsort之前,必须自己定义一个比较函数。这个比较函数用于比较两个元素的大小。由于qsort可以排序任意数据类型,包括自定义的结构类型,因此,做一个自定义的比较函数是必要的。int Comp(const void *p1,const void *p2 ){ return *((Element_type *)p2) > *((Element_type *)p1) ? 1 : -1;}int ma 阅读全文
posted @ 2012-06-02 19:54 有间博客 阅读(415) 评论(0) 推荐(0) 编辑
  2012年5月31日
摘要: 最大流问题 Edmonds-Karp算法图论中的最大流问题解法一般分为两类:(1)增广路径方法。这个方法是由Ford-Fulkerson俩人提出来的,所以这一类的方法统称Ford-Fulkerson算法。增广路径又叫流量增益路径,增广的意思我个人理解是“可扩张的”,是由多条边。这种方法总体思想是先找到一条从源点到汇点的增广路径,这条路径不管由多少条边组成,这条路径的容量只能是其中容量最小的边的容量。这其实就是桶的短板效应(我的理解是在图论中也就是最大流最小割定理)。如果我们能找到所有这样的路径(路径是可部分重叠的),那么最后一定能得到最大流。(证明就是最大流最小割定理)。当然,我们每找到一条之 阅读全文
posted @ 2012-05-31 11:42 有间博客 阅读(1248) 评论(0) 推荐(0) 编辑
  2012年5月30日
摘要: #include<iostream>#include<queue>usingnamespacestd;#definemin(a,b)(a)<(b)?a:b#defineN16intcapacity[N][N];//容量intflow[N];//残余容量intpre[N];//前驱结点intn,m;queue<int>qu;intBFS(intsrc,intdes){while(!qu.empty())qu.pop();for(inti=1;i<=n;i++)pre[i]=-1;pre[src]=0;flow[src]=INT_MAX;//初始化源 阅读全文
posted @ 2012-05-30 10:15 有间博客 阅读(473) 评论(0) 推荐(0) 编辑
  2012年5月29日
摘要: 网络流的最经典应用就是最大流....给定一个图...给出每条边能流过的最大流量...求源点到汇点的最大流量.... 求解网络流的基本思想就是每次寻找增广路(就是源点到汇点的一条可行路)..然后ans+=增广路能流过的流量..更新剩余网络..然后再做增广路...直到做不出增广路..关于网络流入门最难理解的地方就是剩余网络了....为什么在找到一条增广路后...不仅要将每条边的可行流量减去增广路能流过的流量...还要将每条边的反向弧加上增广路能流过的流量.?..原因是在做增广路时可能会阻塞后面的增广路...或者说做增广路本来是有个顺序才能找完最大流的.....但我们是任意找的...为了修正...就 阅读全文
posted @ 2012-05-29 22:19 有间博客 阅读(23820) 评论(1) 推荐(4) 编辑
摘要: #include<cmath>usingnamespacestd;#include<numeric>#include<functional>#include<iostream>#include<algorithm>#include<bitset>#include<string>#include<cstring>#include<cstdio>#include<queue>#include<set>//Bychyx111typedefpair<int,int& 阅读全文
posted @ 2012-05-29 21:54 有间博客 阅读(604) 评论(0) 推荐(0) 编辑
摘要: 最近又复习了下最大流问题,每次看这部分的内容都会有新的收获。可以说最大流问题的资料网上一搜一大把,根本没有必要自己写;但是大部分资料上的专业术语太多了,初学很难理解,至少我当年学这部分的时候前几次就没有看懂。所以我准备备份一点个人的理解。图-1 如图-1所示,在这个运输网络中,源点S和汇点T分别是1,7,各边的容量为C(u,v)。图中红色虚线所示就是一个可行流。标准图示法如图-2所示:其中p(u,v) / c(u,v)分别表示该边的实际流量与最大容量。关于最大流熟悉了什么是网络流,最大流也就很好理解了。就是对于任意的u∈V-{s},使得p(s,u)的和达到最大。上面的运输网络中,最大流如图-3 阅读全文
posted @ 2012-05-29 21:43 有间博客 阅读(390) 评论(3) 推荐(0) 编辑
摘要: 网络流很多问题都可以转化成网络流问题,如运输货物时的物流问题,水流问题,匹配问题等等。网络是一个各条边都有权值和方向的图。网络流问题,一般情况下我们会把各种网络问题抽象成网络流问题,网络流是满足以下性质的网络:每一条边拥有一个最大的容量c,即该条边可以容纳的最大流量,f是流过该边的实际流量,且总有f<=c。对于图中每个顶点(源点和汇点除外)都有流出的流量等于流入的流量。图中只有一个源点一个汇点,且对于源点来说其流入量为0,对于汇点来说流出量为0,源点的流出量等于汇点的流入量,对于最大流问题既是要找出流入汇点的最大流量值。求最大流的算法:EK算法:EK算法中涉及的三个关键词:残留网络,增广 阅读全文
posted @ 2012-05-29 21:26 有间博客 阅读(291) 评论(0) 推荐(0) 编辑
  2012年5月26日
摘要: 关于扩展的卡特兰数:1.(n-m+1)/(n+1)*c(n+m,n)2.c[n+m][n]-c[n+m][m-1]Catalan,Eugene,Charles,卡特兰(1814~1894)比利时数学家,生于布鲁日(Brugge),早年在巴黎综合工科学校就读。1856年任列日(Liege)大学数学教授,并被选为比利时布鲁塞尔科学院院士。卡特兰一生共发表200多种数学各领域的论著。在微分几何中,他证明了下述所谓的卡特兰定理:当一个直纹曲线是平面和一般的螺旋面时,他只能是实的极小曲面。他还和雅可比(Jacobi,C·G·J)同时解决了多重积分的变量替换问题,建立了有关的公式。18 阅读全文
posted @ 2012-05-26 11:41 有间博客 阅读(935) 评论(0) 推荐(0) 编辑
摘要: Catalan数 中文:卡特兰数 原理: 令h(1)=1,h(0)=1,catalan数满足递归式: h(n)= h(1)*h(n-1) + h(2)*h(n-2) + ... + h(n-1)h(1) (其中n>=2) 另类递归式: h(n)=((4*n-2)/(n+1))*h(n-1); 该递推关系的解为: h(n+1)=C(2n,n)/(n+1) (n=1,2,3,...) 我并不关心其解是怎么求出来的,我只想知道怎么用catalan数分析问题。 我总结了一下,最典型的四类应用:(实质上却都一样,无非是递归等式的应用,就看你能不能分解问题写出递归式了) 1.括号化问... 阅读全文
posted @ 2012-05-26 11:18 有间博客 阅读(672) 评论(0) 推荐(0) 编辑
  2012年5月25日
摘要: Received: The judge system has received your solution, usually you just need to wait a minute and your solution will be judged.Accepted (AC): OK! Your program is correct!Presentation Error (PE): Output Format Error. Your output format is not exactly the same as the judge's output, although your 阅读全文
posted @ 2012-05-25 21:49 有间博客 阅读(1376) 评论(0) 推荐(0) 编辑