2011年5月31日

二分图的独立数

摘要: 二分图的最大独立数+poj 题目汇总 入门题:POJ1466 想用C练练手,于是抄的是这里,为了省事抄的是现成的C++,但是不知为什么TLE了,这位的代码可以AC,理论上他用的邻接矩阵更慢才对啊。 总之,记住二分图最大独立数=顶点数-最大匹配数 另外,这道题没有直接标明哪个是boy哪个是girl,原来以为要自己判断一下,但是根据别人的程序,直接求匹配数/2即为实际匹配的数目,其实并不难,纸上画一下... 阅读全文

posted @ 2011-05-31 23:01 oa414 阅读(451) 评论(0) 推荐(0) 编辑

2011年5月30日

二分图最小覆盖数

摘要: 原来想随便找个最大流的题目练练手的,根据别人的列表在POJ上找了一道题,花了好长时间看懂了题目,然后想了一天,不想却碰到了新的知识,而且很多地方都有讲解。 题目:POJ1325 题解:左边是机器A的模式,右边是机器B的模式,用任务来连接这些模式,即某个任务可以用左边的模式a或者右边的模式b来做,那么就a连接b。我们的目的是找出最小的点集能保证任意的一个任务,都能有对应的模式。 算法:最小点覆盖数=... 阅读全文

posted @ 2011-05-30 23:01 oa414 阅读(343) 评论(0) 推荐(0) 编辑

2011年5月26日

二分图匹配:匈牙利算法和最大流建模

摘要: 话说一个半月以前纠结二分图匹配的匈牙利算法时想了好几天终于弄懂了,这种递归的算法设计得很巧妙,核心程序只有几行,但却有些难以理解。查了不少资料,画了不少图,终于模模糊糊懂一些了。 今天想重新热热手,于是复习一下,顺便用SAP写了一下。 一个半月前写的USACO:stall4,裸的二分图最大匹配{ID:lxyweb1PROB:stall4LANG:PASCAL}var a:array[1..1000... 阅读全文

posted @ 2011-05-26 23:27 oa414 阅读(721) 评论(0) 推荐(0) 编辑

2011年5月23日

费用流:入门

摘要: 最近看了一下费用流,找到适合模仿的程序对着资料看了一下,觉得比当初学的最大流还简单(当然现在与四个月以前的水平是不可同日而语了),基本思路是以费用为边权,用最短路算法找最小费用的增广路。主程序有点类似最大流的EK算法,而且找最小费用增光路基本上都是用SPFA来实现,也是相当熟悉的算法了。模仿了一个,又自己打了一个,第二个程序基本十二分钟就敲完了,不过两个程序都Debug了好久,都是变量打错或是漏掉... 阅读全文

posted @ 2011-05-23 22:49 oa414 阅读(660) 评论(0) 推荐(0) 编辑

2011年5月22日

最大流:基础

摘要: 前几个月第一次模仿别人的C代码半懂不懂得写了一次裸的最大流:RQNOJ 194:学生运输,算法导论上太多定义、分析、证明了,刚开始看得不是很明白,相比之下数据结构与算法分析有图解,但是没有给出代码。 后来才知道自己写的BFS增广是叫Edmonds-Karp算法,属于Ford-Fulkerson方法,效率是比DFS增广好些,但是也就只能对付RQ上的弱数据,碰到强题还是不行。 最近兴致突发想学习网络流... 阅读全文

posted @ 2011-05-22 11:32 oa414 阅读(296) 评论(0) 推荐(0) 编辑

2011年5月11日

Treap学习(一)

摘要: BST是重要且简洁易懂的数据结构,但是面对一些数据特别是针对竞赛弄的***钻数据而言,普通BST经常会退化成一条链,效率大打折扣。所以,平衡二叉树的学习是很重要的。 平衡二叉树主要有AVL,红黑树,Treap,伸展树,SBT等等,各有优劣。竞赛时,后三者比较常见。网上分析对比很多,就不复制粘贴了。 Treap是编程实现十分简单的一种平衡二叉树。仅涉及两个旋转,并且大多数代码都是对称的,想偷懒的话可以复... 阅读全文

posted @ 2011-05-11 23:06 oa414 阅读(437) 评论(0) 推荐(0) 编辑

2011年5月2日

K&R学习笔记:学习之前

摘要: 决定转C语言了,虽然不一定用,但是转C的好处是显而易见的 1.手头已经有K&R了,另外C语言的资料非常丰富 2.C语言本身很简单,学习成本低 3.学习了C语言可以为嵌入式开发,Windows编程和UNIX编程,CSAPP的学习打下基础 4.学会了C语言以后学习JAVA/C++等C风格的语言会省力一些 其实针对竞赛来说应该转C++更有优势些,不过既然手头有K&R了,就先把C先搞定吧,否则算法没学好就... 阅读全文

posted @ 2011-05-02 08:34 oa414 阅读(241) 评论(1) 推荐(0) 编辑

2011年4月4日

区间问题:两道线段树和树状数组的基础练习

摘要: 万能的线段树和非常简单但是和好用的树状数组,早有耳闻,但一直找不到题目练习,只是照着书上的程序打了一遍练练手而已。最近发现POJ和HDU的acm题库资源真的很丰富呃,先练练手复习一下吧 POJ 2352 求点左下区域的点数,因为数据已经按从下往上,从左到右排序,所以可以用统计当前1到x的点数和就是答案,树状数组即可解决。但是因为树状数组不能处理0下标,代码有点小改动const maxn=100000;var c,level:array[0..1000000] of longint; i,j,k,n,m,x,y:longint;function lowbit(i:longint):longint 阅读全文

posted @ 2011-04-04 17:27 oa414 阅读(333) 评论(0) 推荐(0) 编辑

2011年3月30日

迭代加深搜索-DFSID:埃及分数

摘要: 迭代加深搜索看似很复杂,但是实际上并不难。我看了USACO的这篇课文:http://www.oiers.cn/usaco%20training/11-401.asp.htm就明白了,具体的网上资料不少,就不罗嗦了。但一直没有通过题目来练习。这几天终于把埃及分数弄懂了。 埃及分数是经典的DFSID例题,不知道出处,我的程序如下: var maxnumber,maxdep:int64; //因为好像要... 阅读全文

posted @ 2011-03-30 22:46 oa414 阅读(489) 评论(0) 推荐(0) 编辑

2011年3月28日

LCA问题的Tarjan 脱机最小公共祖先算法

摘要: 去年暑假就了解这个问题了,当时听的是转换成RMQ问题来做,但是对于当时连写个背包都要抄别人的我来说,听的是一头雾水。之后又略了解了一点,但都是纸上谈兵。偶然看到http://blogold.chinaunix.net/u3/113538/showart.php?id=2212612的一段话: “这个算法基于并查集和深度优先搜索。算法从根开始,对每一棵子树进行深度优先搜索,访问根时,将创建由根结点构... 阅读全文

posted @ 2011-03-28 22:40 oa414 阅读(724) 评论(0) 推荐(0) 编辑

导航